首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以按多值字段的成员搜索Solr文档?

问是否可以按多值字段的成员搜索Solr文档?
EN

Stack Overflow用户
提问于 2010-08-31 16:40:00
回答 2查看 8K关注 0票数 5

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

代码语言:javascript
复制
<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>

我需要为一组完整的测试用例找到多值字段包含或不包含特定成员的文档。如果我能够让下面的任何一个查询工作起来,那么从几十万个文档中找到一个特定的文档将是一个巨大的帮助:

( 1)我能否找到某一特定多值字段的任何成员都不符合某一标准的文档?(如果我查询"alpha没有成员匹配-1“,就会返回上面的文档。)

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

我假设像alpha:[0 TO 1]这样的查询不能工作,因为字段是数组而不是标量。“这是不可能的”的明确答案与“这是你如何做到”的答案一样有用

编辑:和这么多问题一样,答案是“重新检查你的假设”--具体来说,生成我们文档的开发人员关闭了百分比字段的索引。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-08-31 16:56:17

  1. 是的。-alpha:"-1.0"实现了这一点。
  2. 您自己的例子alpha:[0 TO 1]就是解决方案。

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

您所引用的数组是结果集的一部分,它是Solr作为搜索结果的一部分返回的普通存储的数据。

票数 6
EN

Stack Overflow用户

发布于 2010-08-31 16:51:32

这当然是可能的。

我通常使用FQ (filter )参数来获取您想要的内容:http://wiki.apache.org/solr/CommonQueryParameters#fq

但是,您也可以将它抛到查询中。

#1的解决方案:

代码语言:javascript
复制
fq=-alpha:-1.0

过滤掉任何α等于-1.0的东西

我不确定解决方案2。你试过你提到的代码了吗?

代码语言:javascript
复制
fq=beta:[0.0 TO 1.0]

我没有一个好的样本数据集来测试。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3611191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档