我正在开发Solr 4+。我有几个字段到我的solr模式与不同的solr字段类型。文本字段和字符串字段的搜索是否不同?因为我试图搜索字符串字段(这是几个方面字段的复制字段),这并不像预期的那样工作。目标字符串字段被索引和存储。然而,当我改变目标字段的文本字段(只有索引),它的工作正常.你能解释一下为什么会发生这种情况吗?solr中的文本字段和字符串字段在搜索方面到底有什么区别?
8xiog9wr1#
TextFields通常有一个tokenizer和文本分析,这意味着索引内容被分解为单独的token,不需要精确匹配-每个单词/ token可以单独匹配,以决定整个文档是否应该包含在响应中。StrFields不能应用任何标记化或分析/过滤器,并且只会为精确匹配提供给予结果。如果您需要应用分析或过滤器的StrField,则可以使用TextField和KeywordTokenizer实现此功能。
TextFields
StrFields
TextField
KeywordTokenizer
wgxvkvu92#
一个通用的文本字段,具有合理的通用跨语言默认值:它使用StandardTokenizer进行标记,从不区分大小写的“stopwords.txt”(默认为空)中删除停止词,并减少大小写。仅在查询时,它还应用同义词。StrField类型不被分析,而是被逐字索引/存储。
i7uq4tfw3#
Solr模型默认定义的字段非常不同。在不使用**tokenization**或其他处理的情况下,字符串可以精确地保存单词或句子。标记化和二次处理(如小写等)通常由文本处理。在我们需要匹配句子的部分的任何情况下都很有用。如果两个字段都有"This is a sample sentence"索引,我们需要寻找精确的内容。对于文本字段中的命中,搜索sample甚至启用词干的样本可能就足够了。“This is a sample sentence"在字符串字段中获得命中。
tokenization
"This is a sample sentence"
sample
This is a sample sentence"
3条答案
按热度按时间8xiog9wr1#
TextFields
通常有一个tokenizer和文本分析,这意味着索引内容被分解为单独的token,不需要精确匹配-每个单词/ token可以单独匹配,以决定整个文档是否应该包含在响应中。StrFields
不能应用任何标记化或分析/过滤器,并且只会为精确匹配提供给予结果。如果您需要应用分析或过滤器的StrField,则可以使用TextField
和KeywordTokenizer
实现此功能。wgxvkvu92#
一个通用的文本字段,具有合理的通用跨语言默认值:它使用StandardTokenizer进行标记,从不区分大小写的“stopwords.txt”(默认为空)中删除停止词,并减少大小写。仅在查询时,它还应用同义词。
StrField类型不被分析,而是被逐字索引/存储。
i7uq4tfw3#
Solr模型默认定义的字段非常不同。
在不使用**
tokenization
**或其他处理的情况下,字符串可以精确地保存单词或句子。标记化和二次处理(如小写等)通常由文本处理。在我们需要匹配句子的部分的任何情况下都很有用。
如果两个字段都有
"This is a sample sentence"
索引,我们需要寻找精确的内容。对于文本字段中的命中,搜索sample
甚至启用词干的样本可能就足够了。“This is a sample sentence"
在字符串字段中获得命中。