Обновление конфигурации Solr для поиска по всем полям - PullRequest
2 голосов
/ 01 декабря 2011

Может кто-нибудь посоветовать мне, как искать Solr по всем полям?

Это мой текущий requestHandler, который называется "search" и использует solr.SearchHandler.

<requestHandler name="search" class="solr.SearchHandler" default="true">
  <!-- default values for query parameters can be specified, these
         will be overridden by parameters in the request
    -->
   <lst name="defaults">
    <str name="echoParams">explicit</str>
    <int name="rows">10</int>
   </lst>
</requestHandler>

Похоже, что я могу искать по всем текстовым полям, однако мне нужно искать по полю с именем 's_number', и это целое число.

Нужно ли использовать DisMax для поиска по всем полям?

Кроме того, мне нужно настроить defaultSearchField в schema.xml? В настоящее время:

<defaultSearchField>text</defaultSearchField>

Ответы [ 2 ]

4 голосов
/ 01 декабря 2011

Параметр defaultSearchField, о котором вы говорите, ссылается на это поле в вашем schema.xml:

<!-- catchall field, containing all other searchable text fields (implemented
        via copyField further on in this schema  -->
<field name="text" type="text_general" indexed="true" stored="false" multiValued="true"/>

Если вы посмотрите немного дальше, вы увидите операторы, которые выглядят так:

<copyField source="name" dest="text"/>
<copyField source="summary" dest="text"/>

Что вы, вероятно, хотите сделать, это добавить параметр поля копирования для вашего поля s_number, например:

<copyField source="s_number" dest="text"/>

Это скопирует поле номера в поле поиска по умолчанию (текст).,Текстовое поле является «местом сброса» терминов для поиска по умолчанию.Хорошо, что вы можете контролировать, как и какую информацию помещать в поиск по умолчанию.Плохо то, что вам нужно добавить параметры copyField для каждого поля, которое вы хотите по умолчанию.

0 голосов
/ 01 декабря 2011

Для поиска по нетекстовым полям вам, вероятно, не нужно редактировать файлы конфигурации. Вам просто нужно правильно добавить параметр в ваш запрос solr.

Основная идея заключается в том, что вы можете использовать пары ключ / значение для поиска в нетекстовых полях. Смотри http://wiki.apache.org/solr/SolrQuerySyntax.

Чтобы выполнить поиск только по s_number, вы должны настроить свой запрос к серверу solr следующим образом:

q=s_number:123

Это вернет только результаты, где s_number равен 123, как и ожидалось, и будет выполнено как обычный поиск, а не как фильтр пост-поиска. Я не знаю, какую библиотеку php solr вы используете, поэтому я не могу дать вам точный код для настройки этого параметра запроса в вашем коде. Если вы сообщите мне, какую библиотеку вы используете, и / или опубликуете исходный код, который на самом деле выполняет поиск, я смогу дать вам более точные сведения.

Но если говорить напрямую с вашим сервером solr, запрос будет выглядеть примерно так:

http://your-solr-server:8983/solr/select/?q=s_number%3A123
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...