Sunspot Rails之间的区别:text an:string type fields

时间:2013-08-12 11:13:14

标签: ruby-on-rails solr sunspot

每个人都知道你的可搜索模型你可以定义一个类型的索引:text以及:string,例如:

class Post < ActiveRecord::Base
  searchable do
   string :title
   text :title, :body    
end

我尝试搜索文本字段类型和字符串字段类型之间的基本差异,并且能够获得如下基本理解:

  1. 文本字段类型是标记化的,这使得在其中进行全文搜索非常快。
  2. 您不能使用order_by,即对文本字段进行排序,如果您需要对该字段进行排序,则需要将其定义为:string。
  3. 所以我在这里寻找的是文本字段类型和字符串字段类型之间的所有概念以及 USAGE 差异,以便我可以权衡我的意见将字段定义为字符串或文本或两者。

    注意:我并不是说您在一个答案中提供所有差异,每个答案也会有一个差异,但请确保您给出的差异尚未给出。< / p>

1 个答案:

答案 0 :(得分:16)

文字字段

当文本字段被索引时,它们被分解为它们的组成单词,然后使用一组可定义的过滤器进行处理(使用Sunspot的默认Solr安装,它们只是较低的)。此过程称为标记化,它允许使用全文匹配搜索文本字段。您可以在Solr wiki http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters上阅读有关标记化和可用过滤器选项的更多信息。

字符串字段

字符串字段存储字符串数据。这与文本字段有何不同?文本字段被标记化,也就是说它被分解成组成单词;这就是全文搜索的工作原理。另一方面,字符串字段只是按原样索引:索引数据从头到尾完全是字符串。

<强>文档

https://github.com/sunspot/sunspot/wiki/Setting-up-classes-for-search-and-indexing