确定哪个值在SOLR多值字段类型中产生了命中

时间:2010-01-25 19:42:05

标签: lucene

如果我有一个multiValued字段类型的文本,我将值[cat,dog,green,blue]放入其中。有没有办法告诉我何时对狗的那个字段执行查询,它是否在该multiValued字段的第一个元素位置?

假设:客户端对所查询字段的字段类型没有任何预先知识。 (即Solr必须提供答案,客户端不能对返回文档进行过程处理,因为它不知道SOLR如何将查询与结果相匹配)。

披露:我发布到solr-user列表并且没有牵引力,所以我现在在这里发布。

3 个答案:

答案 0 :(得分:3)

目前,Solr中没有提供开箱即用的功能,它告诉您multiValue字段中值的位置。

答案 1 :(得分:1)

希望我能正确理解你的问题。

如果你想得到字段索引或值,那就有一个丑陋的解决方法:

您可以直接在值中添加索引,例如存储“1;汽车”,“2;测试”等。然后使用突出显示。阅读返回的字段时,只需跳过分号前的文本。

但是如果你只想查询一种类型:

您可以避免使用多值方法,只需将其存储为item_i并通过item_1进行查询。要查询所有项目,无论您需要在schema.xml中使用copyField指令的类型

答案 2 :(得分:0)

Lucene API允许这样做,但我不确定Solr是否可以开箱即用。在Lucene中,您可以使用IndexReader.termPositions(术语术语)方法。