Как найти несколько значений против нескольких полей в Solr?

Как искать несколько значений по нескольким полям в Solr?

Мой сценарий:

В настоящее время в schema.xml, я использую <solrQueryParser defaultOperator="AND"/> а также

<copyField source="COL1" dest="defaultsearch"/>
<copyField source="COL2" dest="defaultsearch"/>

а также

<fieldType name="text_search" class="solr.TextField" positionIncrementGap="100">
 <analyzer>
   <tokenizer class="solr.WhitespaceTokenizerFactory" />
   <filter class="solr.LowerCaseFilterFactory" />      
 </analyzer>
</fieldType>

а также

<defaultSearchField>defaultsearch</defaultSearchField>

Пример:

Мой поисковый запрос похож на q = Good Boy.

Я должен получить записи, которые как Good, так и Boy должны представить в COL1 или COL2.

Но для меня это дает ожидаемый результат с дополнительными результатами, такими как Хороший подарок в COL1 и Мальчик, присутствующий в COL2 или Хороший подарок в COL2 и Мальчик, присутствующий в COL1.

Пожалуйста, предложите мне, как найти результаты с Good и Boy, которые должны быть представлены в COL1 или COL2.

1 ответ

Решение

Если вам требуется точное соответствие для COL1 и COL2, вы можете выполнить следующее (при условии, что COL1 и COL2 являются строками):

q=(COL1:"Good Boy" OR COL2:"Good Boy")

Если вам не требуется точное совпадение и фраза должна содержать слова "Хорошо" и "Мальчик" в любом порядке, попробуйте следующее (не проверено):

q=(COL1:*Good Boy* OR COL2: *Good Boy*) 
Другие вопросы по тегам