WordDelimiterFilterFactory и текст с дефисом, не дающий желаемых результатов - PullRequest
1 голос
/ 02 апреля 2012

В настоящее время я внедряю Solr в качестве поисковой системы для интернет-магазина.Большинство продуктов найдено, однако одна ситуация вызывает у меня проблемы:

У меня есть следующее поле:

<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
  <analyzer type="index">
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.WordDelimiterFilterFactory"
          splitOnCaseChange="1" splitOnNumerics="1"
          generateWordParts="1" generateNumberParts="1"
          catenateWords="1" catenateNumbers="1" catenateAll="1"
          preserveOriginal="1"
            />
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.LengthFilterFactory" min="2" max="60"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.WordDelimiterFilterFactory"
          splitOnCaseChange="1" splitOnNumerics="1"
          generateWordParts="0" generateNumberParts="0"
          catenateWords="1" catenateNumbers="1" catenateAll="1"
          preserveOriginal="1"
            />
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.LengthFilterFactory" min="2" max="60"/>
  </analyzer>
</fieldType>

Я индексирую следующий текст в этом поле: panasonic hc-v500

Я ищу по следующему термину: v500.Тип запроса - Dismax, минимальное соответствие - 1.

Желаемый результат: документ найден

Результат: документ не найден

Естественно, я использовалотличный инструмент «Полевой анализ».Это дало мне следующий результат:

http://i.imgur.com/VV26p.png

Мои вопросы:

  1. Есть ли способ сделать индекс Solr термином 'v500'в этой ситуации?

  2. В результате анализа поля у меня сложилось впечатление, что документ соответствует (на «500»), однако он не был возвращен.Как это можно объяснить?

Мой debugQuery с объяснить другим вернул следующий результат:

0.0 = (NON-MATCH) Failure to meet condition(s) of required/prohibited clause(s)

0.0 = no match on required clause (products_model:"v500 (500 v500)")

0.0 = (NON-MATCH) weight(products_model:"v500 (500 v500)" in 20538), product of:

  0.99999994 = queryWeight(products_model:"v500 (500 v500)"), product of:

    26.309225 = idf(products_model: v500=2 500=76 v500=2)

    0.03800948 = queryNorm

  0.0 = (NON-MATCH) fieldWeight(products_model:"v500 (500 v500)" in 20538), product of:

    0.0 = tf(phraseFreq=0.0)

    26.309225 = idf(products_model: v500=2 500=76 v500=2)

    0.5 = fieldNorm(field=products_model, doc=20538)

1 Ответ

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