我在lucene索引中有一个包含多个字段的文档,其中一些字段是多值的,例如
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
中的单个uid有多个值如何使用lucene
我想索引,然后将field10
值映射到field8
,例如
field8: { uid1 | uid2 | uid3}
field10:{id1,id2,id3 | id1,id7 | id1 }
需要帮助 问候
答案 0 :(得分:0)
这就是我认为你在问的问题。假设您有一个类似的文档:
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
等。或者您可以拥有自己的标记生成器,它使用有效负载或术语位置来处理此问题。我不知道它会特别容易或快速。
本网站上有很多关于您的问题的问题,例如: Storing relational data in a Lucene.NET index