Это связано с тем, как actions_as_solr строит запрос в parser_methods.rb
Вам нужно будет внести несколько изменений в parser_methods.rb.
Изменять
models = "AND #{solr_configuration[:type_field]}:#self.name}"
to
models = "#{solr_configuration[:type_field]}:#self.name}"
Тогда не включайте в запрос строку построенных моделей.
query = "(#{query.gsub(/ *: */,"_t:")}) #{models}"
Измените это на просто
query = "(#{query.gsub(/ *: */,"_t:")})"
Теперь вам нужно будет принудительно включить часть этого запроса, содержащую модели, в поиск в SOLR.
Я сделал это с .....
query_options[:fq_model] = models
Перешел на standard.rb
Обязательно добавили
:fq_model
в массив VALID_PARAMS.
Добавлены следующие
if @params[:fq_model]
hash["fq"] = @params[:fq_model]
end
Я добавил несколько дополнительных случаев, но они вам не понадобятся, если вы не хотите сделать: fq опцией для find_by_solr.
После того, как у меня все это было на месте, я теперь могу искать название модели и получаю гораздо меньший набор результатов, чем ожидал.
Скорее всего, для работы multi_solr_search также потребуются обновления, поскольку оказывается, что часть запроса type_t жестко закодирована в этом методе.
Я понял большую часть этого, когда столкнулся с некоторыми проблемами, связанными с этим вопросом. Выделение в Solr 1.4 - requireFieldMatch
person
Mark Redding
schedule
01.04.2010