思考Sphinx索引方法之间的区别

Vic*_*tor 3 ruby-on-rails thinking-sphinx

想知道这些之间有什么区别:

indexes shop.created_at, :as =>created_at
has shop(:created_at), :as => :created_at
has shop.created_at, :as => :created_at
Run Code Online (Sandbox Code Playgroud)

谢谢.

Oma*_*shi 7

所以我不认为第二和第三之间存在差异(如果我错了,请纠正我!)但是,我确信第1和第2之间的区别

indexes 用于指定字段 - 根据Thinking Sphinx网站:

字段是搜索查询的内容 - 因此,如果您希望将字词绑定到特定文档,则最好确保它们位于索引中的字段中.它们只是字符串数据 - 您可以在字段中包含数字和日期等,但Sphinx只会将它们视为字符串,而不是其他内容.

has 用于指定属性 - 再次,根据Thinking Sphinx网站:

属性用于对搜索结果进行排序,过滤和分组.但是,它们的值不受Sphinx对搜索术语的任何关注,并且它们仅限于以下数据类型:整数,浮点数,日期时间(如Unix时间戳 - 因此也是整数),布尔值和字符串.请注意,字符串属性将转换为序数整数,这对于排序尤其有用,但不是很多.

  • 第二个和第三个之间没有区别 - 第二个是避免保留Ruby方法(id,name,type)的解决方法,这使得第三个不太可靠. (2认同)