我在Rails 3.0应用程序中使用Thinking Sphinx,并试图在渲染搜索结果时利用“摘录”和“matching_fields”方法。说我有以下型号:
class Journal < ActiveRecord::Base
has_many :entries
define_index do
indexes description # This is an attribute of the Journal class
indexes entries.note, :as => :entry_note
# ...additional indexes
set_property :delta => true
end
end
在搜索控制器中,我有以下内容:
class SearchResultsController < ApplicationController
def index
@search_results = Journal.search params[:q], :star => true, :match_mode => :fieldmask
respond_with(@search_results)
end
end
在我看来,我想构建一个搜索结果,其中包含与搜索词匹配的仅字段的摘录。例如,如果搜索词与:description字段匹配,我想显示描述的摘录,并突出显示搜索词。但是,如果搜索与期刊的条目之一(:entry_note字段)匹配,我希望搜索结果显示该注释的摘录,并突出显示搜索词。
我已经阅读了this regarding excerpts和this regarding matching_fields,但是,matches_fields方法总是返回nil,我无法找到它的其他文档(即使在源代码中)。什么是匹配字段应该返回?
谢谢!
答案 0 :(得分:0)
Matching_fields返回包含字段名称的字符串数组。应该在每个特定搜索结果上调用它。要使其工作,您需要将:rank_mode设置为:fieldmask,而不是:match_mode。