【发布时间】:2017-08-23 20:05:50
【问题描述】:
我正在开发 Solr 4+。
我的 solr 架构中有几个字段,它们具有不同的 solr 字段类型。
文本字段和字符串字段的搜索是否不同?
因为我正在尝试搜索无法按预期工作的字符串字段(这是几个方面字段的副本字段)。目标字符串字段被索引并存储。
但是,当我更改文本字段(仅索引)的目标字段时,它可以正常工作。
您能说明为什么会发生这种情况吗? solr 中的文本字段和字符串字段在搜索方面到底有什么区别?
【问题讨论】:
我正在开发 Solr 4+。
我的 solr 架构中有几个字段,它们具有不同的 solr 字段类型。
文本字段和字符串字段的搜索是否不同?
因为我正在尝试搜索无法按预期工作的字符串字段(这是几个方面字段的副本字段)。目标字符串字段被索引并存储。
但是,当我更改文本字段(仅索引)的目标字段时,它可以正常工作。
您能说明为什么会发生这种情况吗? solr 中的文本字段和字符串字段在搜索方面到底有什么区别?
【问题讨论】:
TextFields 通常附带一个标记器和文本分析,这意味着索引内容被分解为单独的标记,不需要精确匹配 - 每个单词/标记可以单独匹配以确定整个文档是否应该包含在响应中。
StrFields 不能应用任何标记化或分析/过滤器,只会给出完全匹配的结果。如果您需要应用了分析或过滤器的 StrField,您可以使用 TextField 和 KeywordTokenizer 来实现。
【讨论】:
具有合理的通用跨语言默认值的通用文本字段:它使用 StandardTokenizer 进行标记,从不区分大小写的“stopwords.txt”(默认为空)中删除停用词,并减少大小写。仅在查询时,它也应用同义词。
StrField 类型不被分析,而是逐字索引/存储。
【讨论】: