2013-08-16 7 views
2

я могу получить только Solr работать, если я включу поле в запросе, например:По умолчанию поиск по всем полям

http://localhost:8983/solr/collection1/select?q=lastname:johnson 

Этот запрос возвращает примерно 18 результатов.

Нельзя ли использовать Solr (/ Lucene) без указания поля? Такие, как:

http://localhost:8983/solr/collection1/select?q=johnson 

Я также попытался добавить список полей:

http://localhost:8983/solr/collection1/select?q=johnson&fl=cus_id%2Cinitials%2Clastname%2Cpostcode%2Ccity 

Но все эти запросы возвращают нулевые результаты.

Эти поля из моего schema.xml:

<field name="cus_id" type="string" indexed="true" stored="true"/> 
<field name="initials" type="text_general" indexed="true" stored="true" /> 
<field name="lastname" type="text_general" indexed="true" stored="true"/> 
<field name="postcode" type="string" indexed="true" stored="true" /> 
<field name="city" type="text_general" indexed="true" stored="true"/> 

Я не знаю, что еще попробовать. Какие-либо предложения?

ответ

4

Для определения поля Solr, если не указано, поиск происходит в поле по умолчанию (df).
Итак, когда вы выполняете поиск q = johnson и отлаживаете запрос, вы найдете его в поле по умолчанию, которое обычно является полем text.
Вы можете указать copyfield все поля для одного текста поля и использовать его как поле по умолчанию (если не по умолчанию), чтобы все поисковые запросы искали в поле по умолчанию.
Кроме того, fl перечисляет поля, которые будут возвращены как часть результата, и не связаны с полями, в которых выполняется поиск.
С помощью smax, вы можете проверить параметр qf, чтобы указать несколько полей с переменным усилением.

+0

+1 для copyField. Это лучшая практика для поиска по нескольким полям. – zengr

Смежные вопросы