Apache Solr 字符串字段或文本字段?

Posted

技术标签:

【中文标题】Apache Solr 字符串字段或文本字段?【英文标题】:Apache Solr string field or text field? 【发布时间】:2011-11-02 18:54:25 【问题描述】:

在 apache Solr 中,如果两者都能解决,为什么我们总是需要更喜欢字符串字段而不是文本字段?

字符串或文本如何影响索引大小、索引读取、索引创建等参数?

【问题讨论】:

【参考方案1】:

solr 模式中默认定义的字段有很大不同。

String 将单词/句子存储为精确字符串而不执行标记化等。通常用于存储精确匹配,例如,用于分面。

Text 通常执行标记化和二次处理(例如小写等)。当我们想要匹配句子的一部分时,对所有场景都很有用。

如果以下示例 "This is a sample sentence" 被索引到两个字段,我们必须准确搜索文本 This is a sample sentence 才能从 string 字段中获得命中,而搜索 sample(或甚至samples 启用了词干)以从text 字段中获得成功。

【讨论】:

你还能评论索引大小、索引读取、索引创建吗? 标记化时你会得到更大的索引大小,多大取决于你的处理链。由于有更多工作,索引创建也会稍微慢一些。无论哪种方式,索引读取/创建都会很棒,所以除非接近数百万个文档,否则不要担心。 我正在阅读数以百万计的文档..希望这不是问题..所以我选择字符串字段,因为它在所有情况下似乎都很有效而且我不需要标记器/全文搜索 @JohanSjöberg 正如您所解释的那样,我理解字符串和文本之间的区别,但是如果我需要获得*tence 的点击量怎么办。如果正确选择字段类型怎么办?【参考方案2】:

添加到 Johans Sjöbergs 的好答案:

您可以对String 进行排序,但不能对Text 进行排序。

【讨论】:

以上是关于Apache Solr 字符串字段或文本字段?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 sunspot solr 索引文本(大数据)字段

如何将 solr 字符串字段截断为 10 个字符?

Solr 精确词搜索

在 Solr 中搜索日期范围或空/无字段 [重复]

solr 名称 关键字两个字段权重设置

Solr 高亮是不是还可以指示返回的片段在原始字段中的位置或偏移量?