匹配 SOLR 中多值字段查询中的所有值

use*_*823 5 solr

我有一个SOLR命名语言的字符串 multiValued 字段,并且我希望查询仅返回精确匹配,其中查询中的所有语言都在 multiValued 字段中。

例如,假设我有三个文档:

 "languages": [
          "English",
          "Russian",
          "Swedish"
        ],

"languages": [
          "English",
          "Japanese",
          "Russian",
          "Spanish",
          "Thai"
        ],

"languages": [
          "English",
          "Spanish"
        ],
Run Code Online (Sandbox Code Playgroud)

如果我要查询英语俄语,我应该只返回前两个文档。以下是所使用的查询的一些示例:

q=语言:“英语”和语言:“俄语”

q=语言:(“英语”和“俄语”)

q=语言:("英语","俄语")

q=语言:(“俄语”“英语”)

在所有情况下,这些都会返回包含EnglishRussian 的所有记录。我可能忽略了一些明显的事情,但我四处搜索并没有发现任何可以解释这种行为的东西。

use*_*821 2

确保你写的AND是大写字母。查询如下所示:

q=语言:“英语”和语言:“俄语”

您还可以使用+-来否定查询的一部分。例如,如果您想要一个以“英语”为语言但没有“俄语”的文档,您可以使用如下查询:

q=+语言:“英语” AND -语言:“俄语”