Поиск по нескольким полям с использованием Lucene Parser и Solr с использованием Sunspot - PullRequest
1 голос
/ 17 ноября 2010

Я использую Solr с Sunspot (ruby), и из-за других ограничений мне приходится использовать парсер Lucene вместо парсера DisMax.Мне нужно иметь возможность поиска, используя поля username , а также поля first_name одновременно.

Если бы я использовал DisMax, я мог бы указать qf = "username + first_name", но используя только парсер lucene. Я могу установить только df (поле по умолчанию), и это не позволит мне указать более одного поля,

Как найти несколько полей с помощью анализатора lucene?

Обновление : Ответ: просто используйте параметр q

adjust_solr_params do |params|
   params[:defType] = "lucene"      
   params[:q] = "username:\"#{params[:q]}\" OR first_name:\"#{params[:q]}\""
 end

Ответы [ 2 ]

2 голосов
/ 17 ноября 2010

Вы можете использовать скопировать инструкции полей в своей схеме, чтобы создать поле "поймать все" из всех полей, по которым вы хотите искать.Затем вы устанавливаете df на это поле.

1 голос
/ 17 ноября 2010

Чтобы развернуть комментарий Карусселла, поле по умолчанию - это просто поле по умолчанию. Вы можете явно указать сколько угодно полей, но только если вы не укажете одно, поле по умолчанию вступает в игру.

Таким образом, запрос типа username:foo first_name:bar найдет документы с именем пользователя «foo» и именем «bar».

...