是否有可能在java-lucene中映射多字段值?

时间:2011-09-29 10:11:10

标签: search lucene indexing

我在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 }

需要帮助 问候

1 个答案:

答案 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