查询 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 个结果。
如果您将字符串类型应用于您的字段,那么您将能够实现精确匹配。
您还可以为您的领域设置 KeywordTokenizer
和 lowercasefilter
工厂。
如果你想要标记化,那么你可以有 2 个字段,一个是 String 类型,另一个是 Text 类型。这完全取决于您的要求。
我正在寻找一个特定的 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 个结果。
如果您将字符串类型应用于您的字段,那么您将能够实现精确匹配。
您还可以为您的领域设置 KeywordTokenizer
和 lowercasefilter
工厂。
如果你想要标记化,那么你可以有 2 个字段,一个是 String 类型,另一个是 Text 类型。这完全取决于您的要求。