Thinking Sphinx: метод match_fields, возвращающий ноль - PullRequest
1 голос
/ 03 мая 2011

Я использую Thinking Sphinx в приложении на Rails 3.0 и пытаюсь использовать методы "excerpts" и "Match_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), я бы хотел, чтобы в результате поиска отображалась выдержка из этой заметки с выделенным поисковым термином.

Я прочитал , что касается отрывков , и , что касается match_fields , однако методы Match_Fields всегда возвращают ноль, и я не смог найти другую документацию для него. (даже в исходном коде). Что должны вернуть match_fields?

Спасибо!

1 Ответ

0 голосов
/ 09 сентября 2011

Matching_fields возвращает массив строк с именами полей. Он должен вызываться для каждого конкретного результата поиска. Чтобы заставить его работать, вам нужно установить: rank_mode в: fieldmask, а не: match_mode.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...