Я хочу, чтобы мои потоки были доступны для поиска с помощью полнотекстовых поисковых систем, таких как solr.
Интересно одно: должен ли я индексировать только thread.title, thread.body и post.body или я должен индексировать имя пользователя, созданную дату, nr сообщений, просмотров, страну, регион и город тоже, что принадлежит теме?
Я имею в виду, что когда пользователь ищет поток, они получат обращения, содержащие название заголовка, 2 строки тела, которые пользователь разместил, дату создания, теги и т. Д.
Должен ли я также индексировать всю эту информацию? Но тогда это будет почти вся база данных, или я должен просто индексировать 3 первых столбца, которые я упомянул для полнотекстового поиска?
Другой вопрос: когда пользователь отправляет новый поток, я должен немедленно сообщить solr, чтобы добавить эту строку? Если я не буду, как бы он мог быть доступен для поиска?
Я использовал Apache Lucene, но я еще не использовал Apache Solr. Поэтому я экстраполирую часть этого ответа. Но индексация Lucene – вот что дает Solr, поэтому я предполагаю, что это почти то же самое.
Я бы добавил все, что вы могли бы захотеть, как часть контента, доступного для поиска, или возвращаемого в результате поиска.
Обратите внимание, что Lucene позволяет добавлять поля в документ как «не анализируемые» – это означает, что эти поля не являются частью содержимого, доступного для поиска. Но дополнительные поля возвращаются, когда вы выполняете поиск, и он находит этот документ. Альтернативой является включение только первичного ключа, а затем вы должны использовать это для выполнения поиска SQL после того, как найдете соответствующие документы.
Lucene также поддерживает запросы против определенных полей в индексе. Таким образом, вы можете включить все поля в индекс, но если вы хотите, чтобы заданный поисковый запрос был направлен только подмножеством полей, вы можете это сделать.
Наконец, да, вы должны синхронизировать индекс Lucene / Solr с данными в вашей базе данных. Вы можете использовать DataImportHandler, чтобы помочь загружать партии данных из РСУБД на сервер Solr. Или вы можете использовать HTTP-интерфейс Solter REST, чтобы отправлять отдельные документы, если вам нужно их индексировать в реальном времени по мере создания новых потоков.