Лучшая система текстового поиска для интеграции с пользовательским веб-приложением?
-
02-07-2019 - |
Вопрос
У нас есть веб-приложение, которое позволяет пользователям загружать документы, создавать свои собственные документы и так далее.Загруженные файлы хранятся на Amazon S3, созданная информация хранится в базе данных MySQL.То, что я ищу, - это своего рода поисковая система, куда я загружаю все наши текстовые документы, каждый с уникальным идентификатором, и она создает индекс или что-то еще.Позже я могу задать ему поисковые запросы, и он извлечет наиболее подходящие документы (по их идентификатору) вместе с фрагментами соответствующего текста.
По сути, мы хотим разрешить нашим пользователям выполнять поиск по своему хранилищу загруженных материалов, а также по всему, что другие пользователи отметили как общедоступное.Решение должно работать на стандартном сервере Linux, и в идеале оно должно быть с открытым исходным кодом, но я также рассмотрю платные решения, если они не будут стоить слишком дорого.
На данный момент я нашел трех потенциальных кандидатов:
- Полнотекстовый поиск в MySQL - в некоторых отчетах, которые я читал, говорится, что это происходит очень медленно
- В Apache Lucene, В - к сожалению, написано на Java, но я буду использовать его, если понадобится.Предположительно быстрый
- Сфинкс - не кажется таким популярным, в идеале любое решение, которое я найду, получит большую поддержку сообщества.
Пожалуйста, дайте мне знать, если есть какие-либо другие хорошие варианты, которые я упустил из виду, или если у вас есть опыт работы с любым из вышеперечисленных.
Решение
Взгляните на Солр.Он основан на Lucene, поэтому работает очень быстро и действительно прост в использовании с любой платформы.
Другие советы
Сфинкс возможно, это стоит вашего внимания, так как это хорошо работает с несколькими распространенными RDMS (в частности, MySQL).
Существует также Ксапиан который работает быстро и легко настраивается.
Он поддерживает пользовательские индексаторы, позволяющие индексировать данные, которые не хранятся в базе данных, что может быть полезно для ваших документов, хранящихся на S3.
Я представляю , что Google у вас будет решение, соответствующее вашим потребностям.Начните здесь: Корпоративный Google
В Люцене есть рубиновый порт , который называется "Хорек".В дополнение к Ruby API, вы можете получить доступ к базовой реализации c под названием "cFerret".
Люцен очень хорош.И хотя изначально она была написана на java, существует реализация на php http://framework.zend.com/manual/en/zend.search.lucene.html