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

Lucene 确定哪个值在SOLR多值字段类型中产生了命中,lucene,Lucene,如果我有一个文本的多值字段类型,我在其中输入值[cat,dog,green,blue]。当我为dog对该字段执行查询时,有没有办法告诉我它位于该多值字段的第一个元素位置 假设:客户事先不知道所查询字段的字段类型。(也就是说,Solr必须提供答案,客户无法对退货单进行后期处理,因为它不知道Solr如何将查询与结果进行匹配) 披露:我发布到solr用户列表中,没有得到任何关注,所以我现在发布到这里。目前,solr中没有现成的功能,可以告诉您一个值在多值字段中的位置。目前,Solr中没有现成的功能,可

如果我有一个文本的多值字段类型,我在其中输入值[cat,dog,green,blue]。当我为dog对该字段执行查询时,有没有办法告诉我它位于该多值字段的第一个元素位置

假设:客户事先不知道所查询字段的字段类型。(也就是说,Solr必须提供答案,客户无法对退货单进行后期处理,因为它不知道Solr如何将查询与结果进行匹配)


披露:我发布到solr用户列表中,没有得到任何关注,所以我现在发布到这里。

目前,solr中没有现成的功能,可以告诉您一个值在多值字段中的位置。

目前,Solr中没有现成的功能,可以告诉您一个值在多值字段中的位置。

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

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

希望我能正确理解您的问题

如果要获取字段索引或值,有一个难看的解决方法:

您可以直接在值中添加索引,例如存储“1;car”、“2;test”等。然后使用高亮显示。读取返回的字段时,只需跳过分号前的文本

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


您可以避免多值方法,只需将其存储为item_i并通过item_1进行查询。要查询所有项目,而不考虑其类型,您需要在schema.xml中使用copyField指令。希望我正确理解您的问题

如果要获取字段索引或值,有一个难看的解决方法:

您可以直接在值中添加索引,例如存储“1;car”、“2;test”等。然后使用高亮显示。读取返回的字段时,只需跳过分号前的文本

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


您可以避免多值方法,只需将其存储为item_i并通过item_1进行查询。要查询所有项,而不考虑其类型,您需要在schema.xml中使用copyField指令。我不明白您为什么只想在多值字段中匹配某个位置…@Mauricio-我不想只匹配某个位置,我想知道哪个位置匹配。我不明白你为什么只想匹配多值字段中的某个位置…@Mauricio-我不想只匹配某个位置,我想知道哪个位置匹配。(+1)这可能是正确的答案?是否可以通过查询和索引分析器或它们的扩展版本作为客户端后处理来运行字段?关键是客户端可以产生与查询服务器相同的命中率。(+1)这可能是正确答案?是否可以通过查询和索引分析器或它们的扩展版本作为客户端后处理来运行字段?关键是客户端可以产生与查询服务器相同的命中率。