Внедрение Lucene на существующем стеке .NET / SQL Server с несколькими веб-серверами

Я хочу изучить использование Lucene для решения полнотекстового поиска для сайта, которым я сейчас управляю. Сайт полностью построен на технологиях SQL Server 2008 / C # .NET 4. Данные, которые я хочу проиндексировать, на самом деле довольно просты, всего с парой полей на запись, и только одно из этих полей действительно доступно для поиска.

Мне не ясно, какой лучший набор инструментов мне нужно использовать, или какую архитектуру я должен использовать. В частности:

  1. Где мне поставить индекс? Я видел, как люди рекомендуют размещать его на веб-сервере, но для большого количества веб-серверов это может показаться расточительным. Конечно, централизация здесь будет лучше?

  2. Если индекс централизованный, как я могу запросить его, учитывая, что он просто живет в файловой системе? Придется ли мне эффективно размещать его в общей сетевой папке, которую могут видеть все веб-серверы?

  3. Существуют ли какие-либо ранее существовавшие инструменты, которые будут постепенно заполнять индекс Lucene по расписанию, извлекая данные из базы данных SQL Server? Не лучше ли мне развернуть здесь свой собственный сервис?

  4. Когда я запрашиваю индекс, нужно ли мне просто вернуть кучу идентификаторов записей, которые я затем возвращаю в БД для фактической записи, или мне следует стремясь извлечь все, что мне нужно для поиска, прямо из индекса?

  5. Есть ли смысл в попытке реализовать что-то вроде Solr в этой среде? Если это так, я бы, вероятно, дал ему собственную виртуальную машину * nix и запустил ее в Tomcat. Но я не уверен, что Solr купит мне в этом случае.

28
задан marc_s 30 June 2011 в 09:04
поделиться