В настоящее время я разрабатываю веб-сайт, который позволяет пользователям загружать презентации, документы и электронные книги (что-то вроде scribd и slideshare), поэтому мне нужно быть в состоянии для поиска в содержимом файла. В настоящее время я извлекаю текст из файлов в txt-файле. Я рассматриваю 2 вариант, как я использую MySQL:MySQL: лучший способ поиска в содержимом файлов (полнотекстовый поиск)
- Храните обычный текст в полнотекстовом индексе в отдельной таблице и использовать MySQL для поиска через него.
- Используйте инвертированный указатель для хранения слов и поиска по ним. (Две новые таблицы - слова и многие-ко-многим с таблицей документов). Теперь в этом случае я могу сделать, чтобы работать с повторяющимися словами, которые придают большее значение результатам.
Текст будет использоваться только для поиска. Проблема с (1) заключается в том, что текст электронной книги может быть огромным, поэтому я рассматриваю его ограничение (например, 50 кбайт или менее). (2) также имеет проблему с большим количеством слов в электронной книге, которая, опять же, может быть ограничена.
Так вы можете вести меня наилучшим образом, чтобы индексировать текст и быть в состоянии выполнять быстрый поиск в полнотекстовом режиме. В этом случае мне нужно извлечь максимум из mysql.
Рассматривали ли вы с помощью Sphinx (http://sphinxsearch.com/about/sphinx/) ? Похоже, что это будет хорошо подходит для вашей проблемы и стека технологий. –
Звучит неплохо, но у меня также есть система тегов, можно ли выполнять поиск в обоих случаях одновременно? Я имею в виду поиск в тегах и тексте и сортировку результатов на основе релевантности полного текста и существования определенного тега. Кроме того, могу ли я дать Sphinx весь текст (некоторые файлы формата txt превышают 200 КБ)? Будет ли это проблемой для Sphinx для обработки и что такое компромисс производительности в этом случае? Я имею в виду, это того стоит? – stormbreaker