2010-11-01 2 views
1

Я реализовал SOLR орфографию, основанную на FieldType Приводимые здесь: http://wiki.apache.org/solr/SpellCheckingAnalysis орфографии должно быть сделано для имен поставщиков, где предложения должны быть предоставлены, связанные с термином для поиска введенного. Я использовал copyField для поля vendorName указанного выше типа, т. Е. TextSpell Я получаю странные сопоставленные результаты для некоторых моих запросов. , например. 1) maccys не дает мне никаких результатов, где, когда maccy дает мне желаемый результат, т. Е. Macy's. Я сравнил текстовый анализ (инструмент администратора), сделанный для maccys & maccy, используя оба текста & textSpell fieldtypes и оба дают macy как endresult. Итак, почему нет результата, полученного от проверки орфографии?Solr проверка орфографии

2) khols дает мне «обувь» результат, когда правильный результат «kohls» является третьим предложением после (обувь & магазинов).

onlyMorePopular флаг является ложным и точность по умолчанию 0,5

Заранее спасибо за любую помощь. Я немного потерял с точки зрения отладки.

ответ

2

Мы столкнулись с такими же проблемами для проверки орфографии, принеся странные результаты, хотя у нас было много доступных данных. Я не могу, как отладить это лучше, но я могу вам сказать, что мы сделали:

  1. мы используем текстовое поле, как это - никаких пробелов или стандартный Tokenizer! Вы можете также добавить гальки фильтра, если у вас есть меньше данных индекса не только «привет кролик», но и «кролик привета», но это будет взрывать индекс проверки орфографии еще

    <fieldType name="txtspell" class="solr.TextField" positionIncrementGap="100" omitNorms="true"> 
        <analyzer> 
         <tokenizer class="solr.KeywordTokenizerFactory"/> 
         <filter class="solr.LowerCaseFilterFactory"/> 
         <filter class="solr.TrimFilterFactory" /> 
         <filter class="solr.PatternReplaceFilterFactory" 
         pattern="[\-\.\/\(\),]" replacement="" replace="all"/> 
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="spellstopwords.txt"/>      
         <!-- we don't want duplicates for one doc --> 
         <filter class="solr.RemoveDuplicatesTokenFilterFactory"/> 
        </analyzer> 
    </fieldType> 
    
  2. , если вам действительно нужна сверка то (если вы не используете фильтр гальки, который вам понадобится), вы можете использовать solr из туловища, где вы можете указать maxCollationTries = 1, чтобы быть уверенным, что возвращенная коррекция приведет к некоторым хитам

  3. мы используем проверку орфографии.accuracy = 0,7 (и толькоMorePopular = false)