查询 SolR 以获取多个字段中的唯一值

Query SolR for uniq value in multiple field

我正在寻找一个特定的 SolR 查询,它可以 select 字段中的值,前提是它是唯一的。

例如,这里有一些文档:

<doc>
  <id>1</id>
  <folder_id>abc;def;ghi</folder_id>
</doc>

<doc>
  <id>2</id>
  <folder_id>def</folder_id>
</doc>

如果我向 solr 请求 folder_id:"def",它会返回两个文件,但我只想要 id: 2

的那个

我想要的是能够检索所有具有密钥 def 且仅此一个的文档。 不幸的是,我无法检索所有其他键来创建这样的查询 folder_id:"def" AND NOT folder_id:("abc", "ghi")

如果你们需要更多信息,请告诉我

使用 String 作为您字段的字段类型,而不是文本。

String 将 word/sentence 存储为精确字符串而不执行标记化等。通常用于存储精确匹配,例如,用于分面。 Text 通常执行标记化和二次处理(例如小写等)。

当前您的字段类型为 Text,它正在标记文本并创建单独的标记。因此,您得到 2 个结果。

如果您将字符串类型应用于您的字段,那么您将能够实现精确匹配。

您还可以为您的领域设置 KeywordTokenizerlowercasefilter 工厂。

如果你想要标记化,那么你可以有 2 个字段,一个是 String 类型,另一个是 Text 类型。这完全取决于您的要求。