9

正如每个人都知道的那样,在您的可搜索模型中,您可以定义 :text 和 :string 类型的索引,例如:

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

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

  1. 文本字段类型是标记化的,这使得在它们中进行全文搜索非常快。
  2. 您不能使用 order_by 即对文本字段进行排序,如果您需要对该字段进行排序,则需要将其定义为 :string。

所以我在这里寻找的是文本字段类型和字符串字段类型之间的所有概念 以及用法差异,以便我可以在将字段定义为字符串或文本或两者时权衡我的意见。

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

4

1 回答 1

17

文本字段

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

字符串字段

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

文档

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

于 2013-08-12T13:24:27.123 回答