поиск apache solr с помощью * - PullRequest
       17

поиск apache solr с помощью *

1 голос
/ 21 октября 2011

Когда я ищу так: q = *6205* Я получил гораздо больше результатов, чем поиск q = 6205, и это хорошо, но моя проблема в следующем: когда я ищу q = 6205-2RS или q = 6205 \ -2RSполучил некоторые результаты, но когда я вставил * в строку поиска, я не получил результатов (q = * 6205-2RS * или q = * 6205 \ -2RS *) Почему?

Я хочу найти * 6205-2RS *, но я хочу, чтобы solr также искал эту строку в середине имен элементов.

1 Ответ

1 голос
/ 21 октября 2011

Запросы по шаблону не анализируются.
Поэтому, когда вы ищете 6205-2RS с подстановочными знаками, он будет найден как есть, без какого-либо анализа, такого как фильтр нижнего регистра, ограничители слов.

Какое определение схемы для поля. Это текстовое поле или тип поля String?

Определение text_general приведено ниже -

<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
  <analyzer type="index">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
    <!-- in this example, we will only use synonyms at query time
    <filter class="solr.SynonymFilterFactory" synonyms="index_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" enablePositionIncrements="true" />
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
</fieldType>

Токенизатор и фильтр нижнего регистра при анализе во время индекса для 6205-2RS будут генерировать токены 6205,2rs
Поскольку во время поиска анализ не выполняется, выполняется поиск 6205-2RS как есть, и результаты не будут найдены.

Измените тип поля на строку, и это должно соответствовать результатам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...