gpt4 book ai didi

arrays - Solr 查询过滤文档,数组中至少有一个值(指定值除外)

转载 作者:行者123 更新时间:2023-12-02 13:23:05 27 4
gpt4 key购买 nike

有没有一种方法可以过滤查询,这样我将获得具有特定数组字段的文档,其中包含除我传递的值之外的至少一个其他值。

例如,我有 3 个文档。

<doc>
<arr name="my_array">
<int>2</int>
<int>4</int>
</arr>
</doc>

<doc>
<arr name="my_array">
<int>2</int>
</arr>
</doc>

<doc>
<arr name="my_array">
<int>4</int>
<int>3</int>
<int>1</int>
</arr>
</doc>

我想要 my_array 中至少包含一个除 2 和 4 之外的其他值的文档。所以结果将是:

<doc>
<arr name="my_array">
<int>4</int>
<int>3</int>
<int>1</int>
</arr>
</doc>

最佳答案

你可以试试

qf=my_array&q=+(2 4) +([* TO 1] [3 TO 3] [5 TO *])

这翻译成

  1. my_array 应包含 2 或 4
  2. my_array 应包含值 x,其中 x < 2、x 在 3 到 3 之间、x > 4

我知道 3 和 3 之间的 有点奇怪,但这是由于示例造成的。

需要注意的是,您需要在客户端计算查询以获得正确的范围子句。虽然计算这个的逻辑并不太难。

<小时/>

我已经使用 eDisMax 尝试过此操作,其配置如下

<requestHandler name="standard" class="solr.StandardRequestHandler">
<lst name="defaults">
<str name="defType">edismax</str>
<str name="fl">*,score</str>
<str name="mm">1</str>
</lst>
</requestHandler>
<queryParser name="edismax"
class="org.apache.solr.search.ExtendedDismaxQParserPlugin" />

关于arrays - Solr 查询过滤文档,数组中至少有一个值(指定值除外),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19952103/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com