我可以通过多值字段的成员搜索Solr文档吗?

Cyr*_*nix 5 lucene solr multivalue

我有一组Solr文档,包含(在其他字段中)具有百分比数据的多值字段,如果值为null,则为-1,例如

<doc>
    ...
    <arr name="alpha">
        <float>0.23</float>
        <float>0.23</float>
        <float>0.43</float>
    </arr>
    <arr name="beta">
        <float>0.52</float>
        <float>-1.0</float>
        <float>0.34</float>
    </arr>
    <arr name="gamma">
        <float>-1.0</float>
        <float>-1.0</float>
        <float>-1.0</float>
    </arr>
    ...
</doc>
Run Code Online (Sandbox Code Playgroud)

我需要查找多值字段包含或不包含某个成员的完整测试用例的文档.如果我可以使下面的任何一个查询起作用,那么找到几十万个特定文档将是一个巨大的帮助:

1)我可以找到一个文件,其中特定多值字段的成员都不符合某个标准吗?(如果我查询"alpha没有成员匹配-1",则会返回上述文档.)

2)我是否可以找到特定多值字段的至少一个成员符合特定标准的文档?(如果我查询"alpha至少有一个成员> 0"或"beta至少有一个成员> 0",则会返回上述文档.)

我假设一个类似的查询alpha:[0 TO 1]不起作用,因为该字段是一个数组而不是一个标量."这是不可能的"的确切答案与"你是如何做到这一点"的答案一样有用 - 提前感谢.

编辑:与许多问题一样,答案是"重新检查您的假设" - 具体而言,生成我们文档的开发人员关闭了百分比字段的索引.

Kar*_*son 6

  1. 是.-alpha:"-1.0"实现了这一点.

  2. 你自己的例子alpha:[0 TO 1]就是解决方案.

简单地说明为什么这样做:每个字段不是值或数组,而是一个术语向量.查询某个字段的字段是包含(或排除)的请求,而不是相等操作.

您引用的数组是结果集的一部分,结果集是Solr作为搜索结果的一部分返回的纯文本存储数据.