2015-07-27 3 views
0

У меня есть тип поля, определенный в my schema.xml, например:solr дает тот же результат для разных значений

<fieldType name="text" class="solr.TextField" positionIncrementGap="100"> 
     <analyzer> 
      <tokenizer class="solr.StandardTokenizerFactory" /> 
      <filter class="solr.LowerCaseFilterFactory" /> 
      <filter class="solr.WordDelimiterFilterFactory" 
       generateWordParts="1" generateNumberParts="1" catenateWords="1" 
       catenateNumbers="1" catenateAll="0" splitOnCaseChange="0" /> 
      <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" /> 
     </analyzer> 
    </fieldType> 

Настоящее мое поле;

<dynamicField name="*_text" type="text" indexed="true" stored="true" /> 

Когда я запрашиваю значение «am26» в плате запроса solr admin, у меня есть следующие результаты в моем документе. (Есть существует много полей, однако, я просто выбрать code_text и оценка полей показать)

"response": { 
"numFound": 6, 
"start": 0, 
"maxScore": 1184.7297, 
"docs": [ 
    { 
    "code_text": "AM232", 
    "score": 1184.7297 
    }, 
    { 
    "code_text": "AM238", 
    "score": 1184.7297 
    }, 
    { 
    "code_text": "AM266", 
    "score": 1184.7297 
    }, 
    { 
    "code_text": "AM268", 
    "score": 1184.7297 
    }, 
    { 
    "code_text": "AM269", 
    "score": 1184.7297 
    }, 
    { 
    "code_text": "AM273", 
    "score": 1184.7297 
    }, 
] 

Как прийти счет из AM232 и AM266 может быть такой же? Кроме того, как мы можем видеть такие значения, как AM232 и AM273 среди результатов? Насколько я знаю, когда мы запрашиваем «am26», solr сначала преобразует эту строку в нижний регистр (согласно определению в schema.xml), а WordDelimiterFilterFactory разделяет строку как am, 26. Поэтому я могу понять результаты, которые включают 26 и AM, но я не знаю, почему я вижу «AM232» и «AM273» в своем документе. Плюс у них есть точная оценка.

ответ

2

Как вы сказали, ваши условия поиска будут: «утро» и «26»

Однако нет подстановочного участвует в этом поиске. Все результаты дали совпадение с «ам», но нет из них матч «26». Для «AM266» индексированные термины «am» и «266». Но термин «26» по-прежнему не соответствует «266». Я ожидаю, что если у вас есть документ «AM26», вы действительно увидите, что получите более высокий балл, чем остальные.

+0

Спасибо за ваш ответ. Хотя документ AM266 не является точным совпадением для поискового термина AM26, он имеет более высокий рейтинг. Соответствуют 4 символа. Главный момент, который я пытаюсь понять, - это то, как AM232 и AM266 имеют тот же результат. Я ожидал бы, что AM232 сравняется с AM266. –

+1

Как я уже сказал, термин «26» соответствует * никому * документов. Термин «26» соответствует термину «266» точно так же, как он соответствует «steve», то есть совсем не соответствует. – femtoRgon

+0

Для вашего: '4 символа совпадают' -> это неправильно. Будет соответствовать только 'AM'. Вы можете использовать инструмент анализа на странице solr admin, чтобы заметить это. – alexf

Смежные вопросы