У меня есть индексированные данные eCommerce с именем поля PartNumber (номера позиций), а данные ежедневно очищаются.Solr возвращает наивысший ранг не точное соответствие для термина 101 возвращает S101
Тип поля в Solr является текстом, потому что поле может содержит цифры, символы или специальные символы, как тир.
Когда я поиск с термином, как:
192.168.xx: хх/Solr/ключевое слово/выберите д = (PartNumber: 101)^2,0 + или + (101) & старт = 0 & строки = 20 = & орфографии истинная & версия = 2.2 & отладки = истинная & фл = *, оценка
результат запроса возвращает: первые 20 строки:
- S101
- 101S
- 101U
Я Пытался PartNumber: "101" и 101 тот же результат всегда возвращается где 101 не занимает первое место.
Примечание: Если срок составляет 4 или более символов (5000,16400, K5125, .. и т.д.) верхний результат лучше, и, как правило, точное совпадение является первым один.
Некоторые из результатов отладки:
<lst name="debug">
<str name="rawquerystring">(PartNumber:101)^2.0 OR (101)</str><str name="querystring">(PartNumber:101)^2.0 OR (101)</str>
<str name="parsedquery">PhraseQuery(PartNumber:"1 10 101"^2.0) PhraseQuery(text:"1 10 101")</str>
<str name="parsedquery_toString">PartNumber:"1 10 101"^2.0 text:"1 10 101"</str><lst name="explain">
<str name="40541432">
6.7604995 = (MATCH) sum of:
5.1748066 = (MATCH) weight(PartNumber:"1 10 101"^2.0 in 492450) [DefaultSimilarity], result of:
5.1748066 = score(doc=492450,freq=1.0 = phraseFreq=1.0
), product of:
0.91124594 = queryWeight, product of:
2.0 = boost
11.357651 = idf(), sum of:
1.5469646 = idf(docFreq=797168, maxDocs=1377508)
3.6602204 = idf(docFreq=96332, maxDocs=1377508)
6.1504664 = idf(docFreq=7984, maxDocs=1377508)
0.040115952 = queryNorm
5.6788254 = fieldWeight in 492450, product of:
1.0 = tf(freq=1.0), with freq of:
1.0 = phraseFreq=1.0
11.357651 = idf(), sum of:
1.5469646 = idf(docFreq=797168, maxDocs=1377508)
3.6602204 = idf(docFreq=96332, maxDocs=1377508)
6.1504664 = idf(docFreq=7984, maxDocs=1377508)
0.5 = fieldNorm(doc=492450)
1.5856929 = (MATCH) weight(text:"1 10 101" in 492450) [DefaultSimilarity], result of:
1.5856929 = score(doc=492450,freq=4.0 = phraseFreq=4.0
), product of:
0.4118627 = queryWeight, product of:
10.266806 = idf(), sum of:
1.407141 = idf(docFreq=916800, maxDocs=1377508)
3.1487658 = idf(docFreq=160655, maxDocs=1377508)
5.7108994 = idf(docFreq=12392, maxDocs=1377508)
0.040115952 = queryNorm
3.850052 = fieldWeight in 492450, product of:
2.0 = tf(freq=4.0), with freq of:
4.0 = phraseFreq=4.0
10.266806 = idf(), sum of:
1.407141 = idf(docFreq=916800, maxDocs=1377508)
3.1487658 = idf(docFreq=160655, maxDocs=1377508)
5.7108994 = idf(docFreq=12392, maxDocs=1377508)
0.1875 = fieldNorm(doc=492450)
</str>
Что такое тип поля и определение PartNumber, похоже, проблема связана не с вашим запросом. Похоже, что это связано с тем, как анализируется поле (вы используете ngram и т. Д.) Как во время индексирования, так и времени запроса. – Arun
Тип поля - это текст по умолчанию с настройками: –
OldTrain
tokenizers: ** В Indexing: ** StopFilterFactory, WordDelimiterFilterFactory, LowerCaseFilterFactory, KeywordMarkerFilterFactory, PorterStemFilterFactory, RemoveDuplicatesTokenFilterFactory ** В запросе: ** WhitespaceTokenizerFactory, SynonymFilterFactory, StopFilterFactory, WordDelimiterFilterFactory, LowerCaseFilterFactory, Ключевое словоMarkerFilterFactory, PorterStemFilterFactory, RemoveDuplicatesTokenFilterFactory – OldTrain