Как я могу получить DocId при добавлении документа в индексе Lucene?

Я индексирую строку данных из базы данных в Lucene. Сеть. Строка эквивалентна из Документа.

Я хочу обновить свою базу данных с DocId, так, чтобы я мог использовать DocId в результатах, чтобы смочь получить строки быстро.

Я в настоящее время сначала retrive PK из документов результата, которые я думаю, должен быть медленнее, чем retriving непосредственно от использования базы данных DocId.

Как я могу найти DocId при добавлении документа Lucene?

5
задан Rohit 11 March 2010 в 14:16
поделиться

2 ответа

Как заявил Юваль, утечка внутренних деталей реализации Lucene - это плохо, особенно с учетом изменения идентификатора документа Lucene при изменении индекса.

Если поиск первичного ключа с помощью doc.get ("pk") для вас слишком медленный, используйте FieldCache для кеширования всех pk в памяти. Тогда поиск будет достаточно быстрым.

2
ответ дан 14 December 2019 в 19:10
поделиться

Полагаться на DocId Lucene - плохая политика, поскольку даже Lucene пытается избежать этого. Я предлагаю вам создать свой собственный DocId. В базе данных я бы использовал автоинкрементное поле. Если ваше приложение не использует реляционную базу данных, вы можете создать этот тип поля программно. В остальном, я советую вам прочитать Поисковая система против СУБД - я считаю, что в Lucene следует хранить только те поля, по которым может осуществляться поиск; остальная часть строки находится в базе данных, поэтому последовательность событий такова:

  1. Используя Lucene, выполните поиск некоторого текста и получите DocId.
  2. Используйте DocId для получения полной строки из базы данных.
3
ответ дан 14 December 2019 в 19:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: