Лучшая система текстового поиска для интеграции с пользовательским веб-приложением?

StackOverflow https://stackoverflow.com/questions/117987

Вопрос

У нас есть веб-приложение, которое позволяет пользователям загружать документы, создавать свои собственные документы и так далее.Загруженные файлы хранятся на Amazon S3, созданная информация хранится в базе данных MySQL.То, что я ищу, - это своего рода поисковая система, куда я загружаю все наши текстовые документы, каждый с уникальным идентификатором, и она создает индекс или что-то еще.Позже я могу задать ему поисковые запросы, и он извлечет наиболее подходящие документы (по их идентификатору) вместе с фрагментами соответствующего текста.

По сути, мы хотим разрешить нашим пользователям выполнять поиск по своему хранилищу загруженных материалов, а также по всему, что другие пользователи отметили как общедоступное.Решение должно работать на стандартном сервере Linux, и в идеале оно должно быть с открытым исходным кодом, но я также рассмотрю платные решения, если они не будут стоить слишком дорого.

На данный момент я нашел трех потенциальных кандидатов:

  1. Полнотекстовый поиск в MySQL - в некоторых отчетах, которые я читал, говорится, что это происходит очень медленно
  2. В Apache Lucene, В - к сожалению, написано на Java, но я буду использовать его, если понадобится.Предположительно быстрый
  3. Сфинкс - не кажется таким популярным, в идеале любое решение, которое я найду, получит большую поддержку сообщества.

Пожалуйста, дайте мне знать, если есть какие-либо другие хорошие варианты, которые я упустил из виду, или если у вас есть опыт работы с любым из вышеперечисленных.

Это было полезно?

Решение

Взгляните на Солр.Он основан на Lucene, поэтому работает очень быстро и действительно прост в использовании с любой платформы.

Другие советы

Сфинкс возможно, это стоит вашего внимания, так как это хорошо работает с несколькими распространенными RDMS (в частности, MySQL).

Существует также Ксапиан который работает быстро и легко настраивается.

Он поддерживает пользовательские индексаторы, позволяющие индексировать данные, которые не хранятся в базе данных, что может быть полезно для ваших документов, хранящихся на S3.

Я представляю , что Google у вас будет решение, соответствующее вашим потребностям.Начните здесь: Корпоративный Google

В Люцене есть рубиновый порт , который называется "Хорек".В дополнение к Ruby API, вы можете получить доступ к базовой реализации c под названием "cFerret".

Люцен очень хорош.И хотя изначально она была написана на java, существует реализация на php http://framework.zend.com/manual/en/zend.search.lucene.html

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top