Есть ли лучшие рекомендации для построения индекса Lucene из реляционной БД? - PullRequest
2 голосов
/ 17 ноября 2008

Я собираюсь использовать Lucene и / или Solr для поиска в веб-приложении на основе СУБД. К сожалению для меня, вся документация, которую я просмотрел, посвящена тому, как получить данные из индекса; Меня больше интересует, как создать полезный индекс. Есть ли «лучшие практики» для этого?

Ответы [ 4 ]

2 голосов
/ 17 ноября 2008

Будет ли несколько приложений записывать в базу данных? Если так, это немного сложно; у вас должен быть какой-то механизм для определения новых записей для подачи в индексатор Lucene.

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

Hibernate имеет поддержку полнотекстового поиска, если вы хотите искать постоянные объекты, а не неструктурированные документы.

Существует проект OpenSymphony под названием Compass , о котором вы должны знать. Я сам держался от этого подальше, в первую очередь потому, что, кажется, это способ более сложный, чем должен быть поиск. Кроме того, как я могу судить из документации (признаюсь, я не нашел времени, необходимого для ее прочтения), он хранит сегменты Lucene в виде двоичных объектов в базе данных. Если вы знакомы с архитектурой Lucene, Compass реализует Lucene Directory поверх базы данных. Я думаю, что это неправильный подход. Я бы использовал встроенную поддержку базы данных для индексации и вместо этого реализовал Lucene IndexReader. Такая же критика относится к реализациям распределенного кэша и т. Д.

2 голосов
/ 18 ноября 2008

Я вообще не исследовал это, но взгляну на LuSql .

Использование Solr также будет простым, но будут некоторые DRY -нарушения с Solr schema.xml и вашей реальной схемой базы данных. (К вашему сведению, Solr поддерживает подстановочные знаки, хотя.)

1 голос
/ 20 ноября 2008

Мы выпускаем наше первое приложение, которое использует Solr сегодня вечером. В Solr 1.3 они включили DataImportHandler, который позволяет вам указывать таблицы базы данных (они называют их сущностями) вместе с их связями. После определения простой HTTP-запрос приведет к импорту ваших данных.

Подробнее см. вики-страницу Solr для DataImportHandler .

1 голос
/ 17 ноября 2008

Как введение:

Брайан МакКаллистер написал хороший пост в блоге: Использование Lucene с OJB .

...