Многие из тех, кто успел попробовать MongoDB в действии, столкнулись с трудностями с полнотекстовым поиском. Встроенный механизм полнотекстового поиска в MongoDB (его так можно назвать с большой натяжкой) не пригоден для реальных потребностей.
Основная проблема заключается в том, что sphinx не позволяет использовать буквенно-цифровые значения в качестве ID документов. Есть несколько вариантов решения этой проблемы.
Читать далее…

Apache Solr - это расширяемая поисковая платформа от Apache. Система основана на библиотеке Apache Lucene и разработана на Java. Особенности ее в том, что она представляет из себя не просто техническое решение для поиска а именно платформу, поведение которой можно легко расширять/менять/настраивать под любые нужды - от обычного полнотекстового поиска на сайте до распределенной системы хранения/получения/аналитики текстовых и других данных с мощным языком запросов.
Читать далее…

В сфинксе (sphinx-search) существует очень хорошее решение для оптимизации процесса индексации.
Суть решения рассмотрена в статье “Дельта индекс в Sphinx“. Дельта индексы существенно снижают ресурсоемкость постоянной переиндексации, позволяя делать ее чаще и иметь более актуальные данные в результатах поиска.
Использование дельта индексов тем не менее требует периодичного обновления основного индекса, чтобы обновить изменившиеся и выбросить удаленные сущности. Да и сам по себе дельта индекс растет со временем, требуя все больше ресурсов для переиндексации (что делает его неэффективным).
Самое простое решение этой задачи - полная переиндексация в непиковые часы (или дни). Это не самый оптимальный подход, т.к. полная переиндексация может занимать часы, а иногда и дни. Существует другое решение для обновления основного индекса, которое может сэкономить множество ресурсов - объединение индексов (index merging).
Читать далее…

Spinx отлично зарекомендовал себя, как движок полнотекстового поиска. Он обладает отличными показателями производительности и вместе с этим является функционально мощным инструментом. Sphinx прекрасно справляется с большими объемами данных при поиске.
Но есть и другая, более медленная операция, с которой приходится сталкиваться - построение индекса. На малых объемах обычно используют перестройку всего индекса, которая занимает не много времени. В случае же большого количества данных индексирование может стать очень медленным процессом (время полной переиндексации в некторых системах достигает дней и недель). В этом случае результаты поиска будут обладать малой временной актуальностью.
Одним из решений подобной проблемы является использование дельта индекса, о чем мы поговорим в этой статье.
Читать далее…
Комментарии