Я хочу изучить использование Lucene для решения полнотекстового поиска для сайта, которым я сейчас управляю. Сайт полностью построен на технологиях SQL Server 2008 / C # .NET 4. Данные, которые я хочу проиндексировать, на самом деле довольно просты, всего с парой полей на запись, и только одно из этих полей действительно доступно для поиска.
Мне не ясно, какой лучший набор инструментов мне нужно использовать, или какую архитектуру я должен использовать. В частности:
Где мне поставить индекс? Я видел, как люди рекомендуют размещать его на веб-сервере, но для большого количества веб-серверов это может показаться расточительным. Конечно, централизация здесь будет лучше?
Если индекс централизованный, как я могу запросить его, учитывая, что он просто живет в файловой системе? Придется ли мне эффективно размещать его в общей сетевой папке, которую могут видеть все веб-серверы?
Существуют ли какие-либо ранее существовавшие инструменты, которые будут постепенно заполнять индекс Lucene по расписанию, извлекая данные из базы данных SQL Server? Не лучше ли мне развернуть здесь свой собственный сервис?
Когда я запрашиваю индекс, нужно ли мне просто вернуть кучу идентификаторов записей, которые я затем возвращаю в БД для фактической записи, или мне следует стремясь извлечь все, что мне нужно для поиска, прямо из индекса?
Есть ли смысл в попытке реализовать что-то вроде Solr в этой среде? Если это так, я бы, вероятно, дал ему собственную виртуальную машину * nix и запустил ее в Tomcat. Но я не уверен, что Solr купит мне в этом случае.