Как стать автором
Обновить

Комментарии 19

Если вы разбираетесь, видел такой интересный вопрос в одной телеграмм группе на который никто не смог ответить.
Есть видео (название, описание, тэги) они находятся в эластике.
И есть супер частая, супер обновляемая статистика которая находится в mongodb.

И допустим по запросу «коты» с лимитом 10 (для пагинации), эластик возвращает и нет проблем. всего подходящий записей по слову «коты» 100млн.

Но тут появляется проблема отсортировать эти записи по статистике. Как это сделать?

1) не будешь же ты делать выбрать 100 млн из эластика, а потом писать запрос для mongo selec from x where ID in(100млн записей) order by field.
2) не будешь же ты в эластик пихать это поле статистики, т.к. она супер часто обновляется, эластик утонет в абсолютно бесполезной переиндексации документов.

Насколько я знаю, в таких случаях статистику в эластике (точнее, в query side, не важно, эластик ли это) начинают обновлять не на каждый чих, а с запаздыванием (eventual consistency). Пользователю почти всегда все равно, смотрит он на текущие данные по лайкам видео с котиками, или пятисекундной давности (особенно учитывая, что за время между поиском и переходом на само видео статистика все равно поменяется).

Total Commander --> Alt + F7.
скриншот: klikr.org/674aaa95de4c64b7bae2268d3fc8.png
Ничего лучше для локального поиска я еще не встречал.
Похоже все велосипеды уже придуманы до нас. ¯\_(ツ)_/¯
Велосипеды к сожалению прос... утеряны. Раньше, на старом месте работы, пользовался программой «Персональный поиск 2.6.0» от Яндекса. При базе (свалке) разнообразных документов от сотен людей и количеством под 100000 и более файлов, только им и спасался. практически любой документ можно было найти за несколько минут, а не убивать на это часы. Не будь его, я бы точно на Alt+F7 повесился.
Персональный поиск 2.6.0
Разработчик: Яндекс
Сайт программы: desktop.yandex.ru
Размер дистрибутива: 4,54 Мбайт
Работа под управлением: Windows 98/Me/NT/2000/XP/Vista
Способ распространения: freeware (http://download.yandex.ru/desktop/YandexDesktopSetup.exe)
Цена: бесплатно
«Персональный поиск» — простая утилита для быстрого поиска документов на русском языке с учетом морфологии. В ней реализованы возможности проведения поиска в документах основных форматов (DOC, XLS, PPT, SWF, PDF, RTF, HTML TXT, MHT и др.), архивах (CHM, DjVu, ZIP, RAR и TAR), аудиофайлах (MP3 и OGG), а также сообщениях электронной почты (Outlook, Outlook Express, Thunderbird и TheBat!).

Но к сожаление это сейчас заброшенный проект, хотя установщик и скачивается, в некоторых местах утверждается что ему на замену пришла Алиса, но такого функционала локального индексированного поиска я у неё не видел.
Вот тут статья Утилиты для локального поиска в КомпьютерПресс 8'2010
Но к сожаление это сейчас заброшенный проект,

Сейчас есть например Recoll www.lesbonscomptes.com/recoll (он правда в первую очередь под Linux но Windows-версия тоже есть).
У macOS есть вполне себе расширяемый Spotlight.
Спасибо за наводку, посмотрим как он с русской морфологией справляется, плюс как кодировки переваривает. Ну и вообще насколько удобный в работе.
Автор пишет о централизованном и заранее проиндексированном хранилище документов:
Централизованная установка – клиент-серверное исполнение. У всех перечисленных выше решений одна фундаментальная проблема – каждый пользователь делает свой локальный поисковый индекс, что в случае больших объёмов хранилищ затягивает индексирование, растёт профиль пользователя на машине и вообще неудобно в случае прихода нового сотрудника или переезда на новую машину.
Поиск по индексу существенно отличается от прямого поиска по содержимому перебором (чем и занимается Total Commander) как минимум скоростью. Насколько я полагаю, в статье идёт речь не о локальном поиске, а о поиске по корпоративному файловому серверу, поэтому, поиск по индексу, в сравнении с поиском по содержимому, также снизит нагрузку на сеть и на HDD сервера.
Хотя, вы правы, для домашнего пользования Total Commander не имеет конкурентов.
Очень очень сыро. Советую посмотреть в сторону поисковой утилиты Everything. Было бы круто иметь что-то подобное, но при том расширяемое с собственными модулями и, возможно, open source.

p.s.
У меня код отображается не как код, а как текст.

Everything не индексирует содержимое.

Программа «Архивариус 3000» похожее делает
Архиариус я упомянул, спасибо.
Идея интересная. Думаю, издательства, копирайтеры и иже с ними оценили бы такое. Я бы не стал привязываться к расширению файла, а искал бы «побайтно» — выбрать штук 10 разных кодировок и если у файла не указана кодировка — искать надпись в байтном представлении UTF8/16/cp1251 и т.п.
Интересно было бы посмотреть бенчмарки по скорости.

Я бы смотрел в сторону определения маймтайпа и/или кодировки на лету и конвертации в плэйнтекст в utf8 для индексации

Бывает так, что весь файл конвертировать в плейн невозможно — бОльшую часть составляют бинарные данные. Поэтому лучше конвертировать искомую строку в байты нужной кодировки, кмк.

Microsoft Search Server же!
Вяло обновляется, но до сих пор рабочий, и, если я не ошибаюсь, даже бесплатный.
Даже статья тут есть.

Был такой проект — Yandex.Desktop — устанавливлся на комп, долго индексировал файлы, быстро искал в базе, недолго доиндексировал. Понимал doc, xls, rtf, pdf, html, eml, djvu, openoffice.
До сих пор пользую.
Извиняюсь, если задел за больное.
Ну а свой проект — конечно нужен, особенно если будет free, даже если не open.
О каком больном речь, что Вы!
Лучше еще не встречал. Жаль, что закрыли проект. Очень помогает не утонуть в продуктах жизнедеятельности офисных бумагомарателей.

Где-то на хабре писали, что хорошего решения для хранения документов и поиска — пока просто нет. Так что подобное начинание нужно и важно.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации