Я использовал Apache Lucene, но я еще не использовал Apache Solr. Поэтому я экстраполирую часть этого ответа. Но индексирование Lucene - это то, что делает Solr мощным, поэтому я полагаю, что это почти то же самое.
Я бы добавил все, что вам может понадобиться, как часть содержимого для поиска или возврата в результате поиска.
Обратите внимание, что Lucene позволяет добавлять поля в документ как "не проанализированные" - это означает, что эти поля не являются частью содержимого для поиска. Но дополнительные поля возвращаются, когда вы выполняете поиск, и он находит этот документ. Альтернативой является включение только первичного ключа, а затем вам придется использовать его для поиска SQL после того, как вы нашли соответствующие документы.
Lucene также поддерживает запросы к определенным полям в индексе. Таким образом, вы можете включить все поля в индекс, но если вы хотите, чтобы данный поиск соответствовал только подмножеству полей, вы можете сделать это.
Наконец, да, вы должны синхронизировать индекс Lucene / Solr с данными в вашей базе данных. Вы можете использовать DataImportHandler , чтобы помочь загружать пакеты данных из СУБД на сервер Solr. Или вы можете использовать REST-подобный HTTP-интерфейс Solr для публикации отдельных документов, если они нужны для индексирования в реальном времени при создании новых потоков.