Я индексирую строку данных из базы данных в Lucene. Сеть. Строка эквивалентна из Документа.
Я хочу обновить свою базу данных с DocId, так, чтобы я мог использовать DocId в результатах, чтобы смочь получить строки быстро.
Я в настоящее время сначала retrive PK из документов результата, которые я думаю, должен быть медленнее, чем retriving непосредственно от использования базы данных DocId.
Как я могу найти DocId при добавлении документа Lucene?
Как заявил Юваль, утечка внутренних деталей реализации Lucene - это плохо, особенно с учетом изменения идентификатора документа Lucene при изменении индекса.
Если поиск первичного ключа с помощью doc.get ("pk") для вас слишком медленный, используйте FieldCache для кеширования всех pk в памяти. Тогда поиск будет достаточно быстрым.
Полагаться на DocId Lucene - плохая политика, поскольку даже Lucene пытается избежать этого. Я предлагаю вам создать свой собственный DocId. В базе данных я бы использовал автоинкрементное поле. Если ваше приложение не использует реляционную базу данных, вы можете создать этот тип поля программно. В остальном, я советую вам прочитать Поисковая система против СУБД - я считаю, что в Lucene следует хранить только те поля, по которым может осуществляться поиск; остальная часть строки находится в базе данных, поэтому последовательность событий такова: