возможно ли в java-lucene отобразить многополюсные значения? - PullRequest
1 голос
/ 29 сентября 2011

у меня есть один документ в люценовом индексе с несколькими полями, и некоторые поля имеют многозначные значения, например

Document{ field1: field2: field3: .... field9:}

, а поля имеют вид

field1:some string value
field2:some int value
.
.
.
field8:(string values that are space separated and each is a token )//uid for some items
field9:(value or items whose uid is in field8 and both field8 and field9 are one to one map)

Благодаря этому я могу искать и индексировать многозначное поле в плоской структуре документа, теперь у меня есть другое поле, например field10: в котором у меня есть несколько значений для одного идентификатора пользователя в field8, тогда как я могу индексировать и искатьэто новое поле в этой структуре с использованием lucene

я хочу проиндексировать, а затем сопоставить значения field10 с field8, например

field8: {     uid1    | uid2     | uid3} 
field10:{id1,id2,id3  | id1,id7  | id1 }

Требуется помощь с уважением

1 Ответ

0 голосов
/ 30 сентября 2011

Вот то, что я думаю, вы спрашиваете. Предположим, у вас есть документ вроде:

field8:  {    1    |    2    |    3    }
field10: { foo,bar | baz,foo | bar,baz }

Вы хотите, чтобы запрос +field8:1 +field10:foo возвратил этот документ, но +field8:3 +field10:foo не должен возвращать документ.

Это реляционная модель данных, и это не то, что Lucene пытается сделать хорошо. Лучше всего использовать реляционную базу данных.

Если вы хотите придерживаться Lucene, вам следует разделить каждое из этих полей на отдельный документ. Таким образом, один документ будет field8:1, field10: foo,bar и т. Д. В качестве альтернативы у вас может быть свой собственный токенизатор, который использует полезные нагрузки или термины позиции для обработки этого. Я не знаю, будет ли это особенно легко или быстро.

На этом сайте много вопросов относительно вашей проблемы, например, Хранение реляционных данных в индексе Lucene.NET

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...