solr игнорирует значения в многополевом поиске - PullRequest
0 голосов
/ 04 июня 2018

Я только начал использовать Solr, и я не уверен, что мне не хватает.У меня 2 поля ул. Адреса и города.streetAddresses - текстовое поле, а city - строковое поле.Это уже было настроено, прежде чем я начал смотреть на Solr.Схема.xml для полей выглядит следующим образом:

<types>
<fieldType class="org.apache.solr.schema.TextField" name="TextField">
  <analyzer>
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
</fieldType>
<fieldType class="org.apache.solr.schema.StrField" name="StrField"/>
</types>
<fields>
 <field indexed="true" multiValued="true" name="streetAddresses" stored="true" type="TextField"/>
 <field docValues="true" indexed="true" multiValued="true" name="cities" stored="true" type="StrField"/>
</fields>

Проблема заключается в том, что при запросе нескольких полей анализируемая строка для streetAddresses содержит только первую часть строки, а остальная часть игнорируется.Например, если я выполняю поиск по StreetAddresses для 111 Main St и городов для Бостона, запрос выглядит как

q=streetAddresses%3A111+Main+st+OR+cities%3ABoston&wt=json&indent=true&debugQuery=true&defType=edismax&qf=streetAddresses%2Ccities

И отладка выглядит как

"rawquerystring": "streetAddresses:111 Main st OR cities:Boston",
"querystring": "streetAddresses:111 Main st OR cities:Boston",
"parsedquery": "(+(streetAddresses:111 cities:Boston))/no_coord",
"parsedquery_toString": "+(streetAddresses:111 cities:Boston)",
"explain": {},
"QParser": "ExtendedDismaxQParser",
"altquerystring": null,
"boost_queries": null

Я получаю результат на основе111 для улицы Адреса, но остальная часть строки (Главная улица) игнорируется.Я пытался найти проблему, и некоторые упоминали о стоп-словах или ограничении слов, но я не использую ничего из этого.Есть идеи?

1 Ответ

0 голосов
/ 04 июня 2018
streetAddresses:111 Main st OR cities:Boston

означает "поиск 111 в streetAddresses, Main в поле поиска по умолчанию (.., которое больше не может быть установлено по умолчанию), st в поле поиска по умолчанию и для Boston в cities.

Если вы хотите найти 111 Main st в streetAddresses, вам нужно будет заключить в кавычки значение (и использовать поиск по фразе):

streetAddresses:"111 Main st"

.. или указывайте поле каждый раз:

streetAddresses:111 streetAddresses:Main streetAddresses:st
...