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]不起作用,因为该字段是一个数组而不是一个标量."这是不可能的"的确切答案与"你是如何做到这一点"的答案一样有用 - 提前感谢.
编辑:与许多问题一样,答案是"重新检查您的假设" - 具体而言,生成我们文档的开发人员关闭了百分比字段的索引.
是.-alpha:"-1.0"实现了这一点.
你自己的例子alpha:[0 TO 1]就是解决方案.
简单地说明为什么这样做:每个字段不是值或数组,而是一个术语向量.查询某个字段的字段是包含(或排除)的请求,而不是相等操作.
您引用的数组是结果集的一部分,结果集是Solr作为搜索结果的一部分返回的纯文本存储数据.