acts_as_solr возвращает все строки в базе данных при использовании модели в качестве поискового запроса - PullRequest
1 голос
/ 16 января 2009

В нашем приложении мы используем для поиска activ_as_solr. Кажется, все работает гладко, за исключением того факта, что использование имени модели в качестве поискового запроса возвращает каждую строку в таблице.

Например, допустим, у нас есть таблица пользователей. В нашей модели мы указываем act_as_solr для поиска по имени, фамилии и дескриптору полей. Когда вы используете «пользователь» в качестве поискового запроса, он возвращает каждого отдельного пользователя в системе или каждую строку в базе данных в результате.

Кто-нибудь еще сталкивался с этим?

1 Ответ

1 голос
/ 01 апреля 2010

Это связано с тем, как acts_as_solr создает запрос в parser_methods.rb

Есть несколько изменений, которые вам нужно будет сделать в parser_methods.rb

Изменить

models =  "AND #{solr_configuration[:type_field]}:#self.name}" 

до

models =  "#{solr_configuration[:type_field]}:#self.name}" 

Тогда не включайте строку построенных моделей в запрос.

query = "(#{query.gsub(/ *: */,"_t:")}) #{models}"

Измените это на

query = "(#{query.gsub(/ *: */,"_t:")})"

Теперь вам нужно будет принудительно включить часть поиска в запросе в SOLR.

Я сделал это с .....

query_options[:fq_model] = models

Перешел на стандарт.рб

Обязательно добавьте

: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

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