dea*_*bry 2 thinking-sphinx ruby-on-rails-3
有没有人能够从应用程序范围的ThinkingSphinx查询中对搜索结果进行排序?
我有以下设置:
class Resource < ActiveRecord::Base
# ...
define_index do
indexes :title, :as => :sortable_name, :sortable => true
indexes :tease
indexes :description
indexes authors(:name), :as => :author, :facet => true
end
end
Run Code Online (Sandbox Code Playgroud)
和
class Author < ActiveRecord::Base
# ...
define_index do
indexes :name, :as => :sortable_name, :sortable => true
indexes :title
indexes :bio
end
end
Run Code Online (Sandbox Code Playgroud)
我希望能够搜索这些模型(以及其他2个模型),并按字母顺序对结果进行排序.我需要排序的字段可以有不同的名称,因此我使用以下命令对它们进行索引:as =>:sortable_name(欢迎提供更好的建议).
以下所有工作都像魅力:
Author.search 'something', :order => :sortable_name
Resource.search 'something', :order => :sortable_name
ThinkingSphinx.search 'something'
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试
ThinkingSphinx.search 'something', :order => :sortable_name
Run Code Online (Sandbox Code Playgroud)
我明白了:
ThinkingSphinx::SphinxError: index author_core,resource_core: sort-by attribute 'sortable_name' not found
Run Code Online (Sandbox Code Playgroud)
使用以下方法将搜索显式限制为这些类:classes => [Author,Resource]没有帮助.显然我不了解斯芬克斯在这里工作的方式......
我重建了索引并停止/启动了searchd进程,所有结果都相同.
Rails 3.0.5和ThinkingSphinx 2.0.2
有什么建议?
在您的作者和资源搜索示例中,Thinking Sphinx有一个模型引用,因此可以查看该模型以查找其字段,并将sortable_name转换为sortable_name_sort(实际用于排序的属性).
当您在多个模型中搜索时,Thinking Sphinx不会深入研究每个模型 - 因此您需要更加耐心地告诉它该做什么.请尝试以下方法:
ThinkingSphinx.search 'something', :order => :sortable_name_sort
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
629 次 |
最近记录: |