思考Sphinx:matches_fields方法返回nil

时间:2011-05-03 19:14:02

标签: ruby-on-rails thinking-sphinx

我在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 excerptsthis regarding matching_fields,但是,matches_fields方法总是返回nil,我无法找到它的其他文档(即使在源代码中)。什么是匹配字段应该返回?

谢谢!

1 个答案:

答案 0 :(得分:0)

Matching_fields返回包含字段名称的字符串数组。应该在每个特定搜索结果上调用它。要使其工作,您需要将:rank_mode设置为:fieldmask,而不是:match_mode。