хранение индекса lucene в базе данных с использованием объектов данных в Java - PullRequest
0 голосов
/ 28 января 2011

Возможно ли это? Я не могу получить доступ к базе данных напрямую - только через объекты данных. Смогу ли я выполнить поиск по индексу, если элементы будут возвращены во что-то вроде ArrayList?

Если это невозможно, могу ли я как-нибудь использовать Lucene (или другой инструмент) для нечеткого сопоставления объекта с использованием Java?

Например, у меня есть объект Person, который имеет FirstName и LastName. Я хочу сделать нечеткое совпадение по имени. Итак, скажем, у меня есть массив из x объектов Object, существует ли эффективный способ циклически проходить через каждый объект Person и сравнивать имена?

Ответы [ 2 ]

0 голосов
/ 28 января 2011

Это возможные решения, которые я придумала - однако я не могу сохранить свой индекс в FSDirectory (спецификации проекта не позволяют этого), а для RAMDirectory будут тысячи объектов Person, которые нам нужно будет найтитак что я не знаю, является ли хранение в памяти идеальным для этой ситуации.

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

0 голосов
/ 28 января 2011

Возьмите эти объекты данных и создайте отдельный индекс Lucene поверх них, сохраняя нужные вам поля. Используя ваш пример Person, каждый документ Lucene будет [Id, FirstName, LastName]. Поиск по этому индексу вернул бы Id, необходимый для запроса к вашей базе данных полного объекта данных.

Фактическая индексация проста, вам просто нужно получить список объектов данных, выполнить их итерацию, сгенерировать документы Lucene и сохранить их с помощью IndexWriter. Вы можете работать либо с каталогом файловой системы для постоянного хранения, либо с хранением в памяти.

...