В настоящее время я внедряю 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
Мои вопросы:
Есть ли способ сделать индекс Solr термином 'v500'в этой ситуации?
В результате анализа поля у меня сложилось впечатление, что документ соответствует (на «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)