Solr 文本字段和字符串字段 - 不同的搜索行为

问题描述 投票:0回答:3

我正在开发 Solr 4+。

我的 solr 模式中有多个具有不同 solr 字段类型的字段。

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

因为我正在尝试搜索字符串字段(这是几个方面字段的复制字段),但它无法按预期工作。目标字符串字段被索引并存储。

但是,当我将目标字段更改为文本字段(仅索引)时,它工作正常。

您能说明为什么会发生这种情况吗? solr 中的文本字段和字符串字段在搜索方面到底有什么区别?

solr lucene solr4 solrnet
3个回答
35
投票

TextFields
通常附有分词器和文本分析,这意味着索引内容被分解为单独的标记,无需精确匹配 - 每个单词/标记可以单独匹配,以决定是否应包含整个文档在回复中。

StrFields
无法应用任何标记化或分析/过滤器,并且只会给出完全匹配的结果。如果您需要应用分析或过滤器的 StrField,您可以使用
TextField
KeywordTokenizer
来实现。


0
投票

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

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


0
投票

Solr 模型默认定义的字段有很大不同。

在不使用

tokenization
或其他过程的情况下,字符串可以准确地保存单词或句子。通常有助于分面,例如存储精确匹配。

分词和二次处理(如小写等)通常通过文本来处理。在我们需要匹配句子的部分内容的任何情况下都很有用。

如果两个字段都有示例

"This is a sample sentence"
索引,我们需要查找精确的内容。对于文本字段中的命中,搜索
sample
甚至启用了词干提取的样本可能就足够了。 “
This is a sample sentence"
在字符串字段中获得命中。

© www.soinside.com 2019 - 2024. All rights reserved.