Поиск термина Solr не ищет все значения из значения мультиполя - PullRequest
0 голосов
/ 20 февраля 2020

У меня есть поле solr

<field name="AllTitles" type="text_general" indexed="true" stored="false" multiValued="true"/>

<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
  <analyzer type="index">
    <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/>
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
    <!-- in this example, we will only use synonyms at query time -->
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
</fieldType>

Пример значения для всех введенных заголовков:

AllTitles: [ "Anything", "wuhan coronavirus", "anything" ]
AllTitles: [ "wuhan coronavirus", "anything", "anything" ]

Поиск выполняется по первому индексу, но если какой-либо совпадающий термин по индексу, отличный от 1-го, то это не так поиск

Например, когда я ищу

q="wuhan coronavirus"

, я получаю 2 результата. Когда я выполняю поиск, используя имя поля «AllTitles»

q=AllTitles:"wuhan coronavirus"

, я получаю 7 результатов правильно.

Может ли кто-нибудь помочь мне определить проблему?

1 Ответ

0 голосов
/ 20 февраля 2020

Во-первых, в вашем SolrConfig. xml проверьте, какое поле было определено в "df". В приведенном ниже примере это «текст».

<requestHandler name="/select" class="solr.SearchHandler">
   <lst name="defaults">
     <str name="echoParams">explicit</str>
     <int name="rows">10</int>
     <str name="df">text</str>
  </requestHandler>

Во-вторых, в схеме. xml или управляемая схема, в зависимости от того, что вы используете, убедитесь, что вы скопировали «AllTitles» в «текст» , Например,

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

Вы также можете проверить это, добавив «AllTitles» к параметру «df» при запросе, прежде чем делать все это, как упомянул raghu777.

...