искать во всех полях несколько значений? - PullRequest
0 голосов
/ 15 декабря 2009

у меня есть два поля:

* * 1002 название корпус

и я хочу найти два слова

собака ИЛИ ЖЕ * кошка * 1007

в каждом из них.

я пробовал q = *: собака ИЛИ кошка

но это не работает.

как мне его набрать?

PS. могу ли я как-нибудь ввести поле поиска по умолчанию = ВСЕ поля в schema.xml?

1 Ответ

0 голосов
/ 04 января 2010

Как отметил Маурисио, использование copyField (см. http://wiki.apache.org/solr/SchemaXml#Copy_Fields) - это один из способов разрешения поиска по нескольким полям без указания их в строке запроса. В этом сценарии вы определяете copyField, а затем задаете поля, скопировать его.

<field name="mysearchfield" type="string" indexed="true" stored="false"/>
...
<copyField source="title" dest="mysearchfield"/>
<copyField source="body" dest="mysearchfield"/>

Как только вы это сделаете, вы можете выполнить поиск как:

q=mysearchfield:dog OR mysearchfield:cat

Если ваш анализатор запросов настроен для разделения на пробелы (обычно), это можно упростить до:

q=mysearchfield:dog cat

Если "mysearchfield" будет вашим стандартным поиском, вы можете еще больше упростить ситуацию, определив этот copyField как defaultSearchField в схеме:

<defaultSearchField>mysearchfield</defaultSearchField>

После этого запрос просто станет:

q=dog cat
...