Существует ли набор рекомендаций по созданию индекса Lucene из реляционной базы данных?

StackOverflow https://stackoverflow.com/questions/296365

  •  08-07-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

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

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

Другие советы

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

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

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

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

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

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

В качестве введения:

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top