Мышление Граней Сфинкса на связанной модели - PullRequest
0 голосов
/ 19 января 2011

Есть ли способ определения фасета в столбце ассоциированной модели типа int? Преобразует ли sphinx все поля, определенные как фасеты, в строки, если они относятся к столбцам ассоциированной модели?

Я пытаюсь определить столбец моей дочерней таблицы как фасет. при восстановлении Model1.facets я получаю эту ошибку.

class Model1 < ActiveRecord::Base
  ....

  has_many :communities, :through => :model2

  ...

  define indexes

     ...

     indexes model2.community_id, :as => :community_id, :facet => :true

     ...

  end

end

модель 1 - Текущая модель модель 2 - объединить модель, используя: через

Model1.facets

NoMethodError: undefined method `to_crc32' for 9:Fixnum
        from D:/Current/TechAssistTest/vendor/plugins/thinking-sphinx/
lib/thinking_sphinx/facet.rb:99:in `translate'
        from (irb):3:in `detect'
        from D:/Current/TechAssistTest/vendor/plugins/thinking-sphinx/
lib/thinking_sphinx/facet.rb:98:in `each'
        from D:/Current/TechAssistTest/vendor/plugins/thinking-sphinx/
lib/thinking_sphinx/facet.rb:98:in `detect'
        from D:/Current/TechAssistTest/vendor/plugins/thinking-sphinx/
lib/thinking_sphinx/facet.rb:98:in `translate'
        from D:/Current/TechAssistTest/vendor/plugins/thinking-sphinx/
lib/thinking_sphinx/facet.rb:75:in `value'
        from D:/Current/TechAssistTest/vendor/plugins/thinking-sphinx/
lib/thinking_sphinx/facet_search.rb:114:in `add_from_results'
        from D:/Current/TechAssistTest/vendor/plugins/thinking-sphinx/
lib/thinking_sphinx/search.rb:219:in `each_with_groupby_and_count'
        from (irb):3:in `each_with_index'
        from D:/Current/TechAssistTest/vendor/plugins/thinking-sphinx/
lib/thinking_sphinx/search.rb:218:in `each'
        from D:/Current/TechAssistTest/vendor/plugins/thinking-sphinx/
lib/thinking_sphinx/search.rb:218:in `each_with_index'
        from D:/Current/TechAssistTest/vendor/plugins/thinking-sphinx/
lib/thinking_sphinx/search.rb:218:in `each_with_groupby_and_count'
        from D:/Current/TechAssistTest/vendor/plugins/thinking-sphinx/
lib/thinking_sphinx/facet_search.rb:113:in `add_from_results'
        from D:/Current/TechAssistTest/vendor/plugins/thinking-sphinx/
lib/thinking_sphinx/facet_search.rb:49:in `populate'
        from D:/Current/TechAssistTest/vendor/plugins/thinking-sphinx/
lib/thinking_sphinx/facet_search.rb:47:in `each'
        from D:/Current/TechAssistTest/vendor/plugins/thinking-sphinx/
lib/thinking_sphinx/facet_search.rb:47:in `populate'
        from D:/Current/TechAssistTest/vendor/plugins/thinking-sphinx/
lib/thinking_sphinx/facet_search.rb:13:in `initialize'
        from D:/Current/TechAssistTest/vendor/plugins/thinking-sphinx/
lib/thinking_sphinx/search_methods.rb:422:in `new'
        from D:/Current/TechAssistTest/vendor/plugins/thinking-sphinx/
lib/thinking_sphinx/search_methods.rb:422:in `facets'
        from (irb):3>>

1 Ответ

2 голосов
/ 19 января 2011

Если вы используете целые числа для фасетов, то они должны быть определены как атрибуты:

has model2.community_id, :as => :community_id, :facet => :true

Метод indexes предназначен для полей - текстовых данных, которые вы хотите, чтобы люди могли искать. Я предполагаю, что люди, которые используют ваш сайт, не будут вводить идентификатор сообщества в поле поиска. Оставьте комментарий, если это не так, и я подробно расскажу, как вы можете иметь community_id как поле и атрибут.

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