Solr Text字段和String字段 - 不同的搜索行为

时间:2014-11-05 08:52:38

标签: solr lucene solr4 solrnet

我正在研究Solr 4 +。

我的solr模式中有几个字段,包含不同的solr字段类型。

对文本字段和字符串字段的搜索是否有所不同?

因为我正在尝试搜索字符串字段(这是少数方面字段的复制字段),这不能按预期工作。目标字符串字段被索引并存储。

但是,当我更改文本字段(仅编制索引)的目标字段时,它可以正常工作。

你能说明为什么会这样吗? solr中搜索文本和字符串字段之间的区别是什么?

2 个答案:

答案 0 :(得分:27)

TextFields通常附加一个tokenizer和文本分析,这意味着索引内容被分解为单独的标记,其中不需要完全匹配 - 每个单词/标记可以单独匹配以决定是否整个文件应包含在回复中。

StrFields无法应用任何标记化或分析/过滤器,并且只会为完全匹配提供结果。如果您需要应用分析或过滤器的StrField,则可以使用TextFieldKeywordTokenizer来实现此目的。

答案 1 :(得分:0)

具有合理的通用跨语言默认值的常规文本字段:使用StandardTokenizer进行标记,从不区分大小写的“stopwords.txt”(默认为空)中删除停用词,以及关闭案例。仅在查询时,它还应用同义词。

不分析StrField类型,而是逐字索引/存储。