Как отсортировать поля (в шаблоне) в зависимости от их веса? - PullRequest
0 голосов
/ 25 апреля 2011

Я использую think_sphinx для поиска и пытаюсь получить выходную таблицу, в которой поля сгруппированы в соответствии с весом (из set_property: field_weights)

Это define_block

  define_index do
    indexes status, title, content, manager, note, start_date, end_date
    has created_at, updated_at, parent_id, organization_id

    has user_id, :as => :user_id, :type => :integer

    has '7', :as => :model_order, :type => :integer

    set_property :field_weights => {
      :title => 1,
      :start_date => 2,
      :user_id => 7
    }

    set_property :delta => true
  end

Как отсортировать поля (в шаблоне) в зависимости от их веса?

1 Ответ

0 голосов
/ 26 апреля 2011

Я не уверен, что понимаю Q, но похоже, что вы пытаетесь прочитать конфигурацию field_weights из представления ... Я не знаю, есть ли у think_sphinx метод для этого, но чтоЯ хотел бы сохранить эту конфигурацию в другом месте и использовать ее там, где вам нужно ...

class YourModel
    FieldWeights = {
        :title => 1,
        :start_date => 2,
        :user_id => 7
    }
  # more code here....

  define_index do
    indexes status, title, content, manager, note, start_date, end_date
    has created_at, updated_at, parent_id, organization_id

    has user_id, :as => :user_id, :type => :integer

    has '7', :as => :model_order, :type => :integer

    set_property :field_weights => YourModel::FieldWeights

    set_property :delta => true
  end
end

Тогда, по вашему мнению, вы можете использовать YourModel :: FieldWeights для отображения полей в порядке их весов, например:

YourModel::FieldWeight.invert.sort
...