2008-11-17 9 views
2

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

ответ

1

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

Подробнее см. the Solr wiki page for DataImportHandler.

2

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

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

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

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

2

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

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