2013-09-05 2 views
0

두 세트의 맞춤법 검사 방법을 찾으려고합니다.Solr 맞춤법 검사 문구

문서에서 발견 된 일반적인 단어에 대한 맞춤법 검사 쿼리를 처리하는 사람. 그리고 저자 이름과 같은 항목에 대해 쿼리의 맞춤법 검사를 처리하는 다른 연산자는 여러 단어로 이루어질 수 있습니다. 나는 그들이 저자의 이름에 원격으로 가까이 가면 제안을 표시 할 수 있도록 일하고 싶다. 맞춤법 오류에 대한 제안은 단어의 거리가 더 가까워 지도록 요구할 것입니다.

지금 당장 필자는 맞춤법에 대한 포괄적 인 필드가 있지만 문구를 깨뜨리는 토큰 화를 많이합니다. 그래서 나는 실제로 일치하는 문구에 대해서는 사용할 수 없습니다.

<searchComponent name="spellcheck" class="solr.SpellCheckComponent" startup="lazy"> 
    <!-- <str name="queryAnalyzerFieldType">textSpell</str> --> 
    <lst name="spellchecker"> 
     <str name="name">default</str> 
     <str name="field">spell</str> 
     <str name="classname">solr.DirectSolrSpellChecker</str> 
     <str name="distanceMeasure">internal</str> 
     <float name="accuracy">0.65</float> 
     <int name="minPrefix">0</int> 
     <int name="maxEdits">1</int> 
     <int name="maxInspections">5</int> 
     <int name="minQueryLength">3</int> 
     <float name="maxQueryFrequency">0.0005</float> 
     <float name="thresholdTokenFrequency">.001</float> 

     <str name="buildOnCommit">true</str> 
    </lst> 

    <!-- a spellchecker that can break or combine words. See "/spell" handler below for usage --> 
    <lst name="spellchecker"> 
     <str name="name">wordbreak</str> 
     <str name="classname">solr.WordBreakSolrSpellChecker</str> 
     <str name="field">spell</str> 
     <str name="combineWords">true</str> 
     <str name="breakWords">true</str> 
     <int name="maxChanges">1</int> 

     <str name="buildOnCommit">true</str> 
    </lst> 
</searchComponent> 

그리고 실제 마법 필드 :

<fieldType name="textSpell" class="solr.TextField" positionIncrementGap="100" > 
     <analyzer> 
       <tokenizer class="solr.StandardTokenizerFactory"/> 
       <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/> 
       <filter class="solr.EnglishMinimalStemFilterFactory"/> 
       <filter class="solr.LowerCaseFilterFactory"/> 
       <filter class="solr.RemoveDuplicatesTokenFilterFactory"/> 
     </analyzer> 
</fieldType> 
<field name="spell" type="textSpell" indexed="true" stored="true" multiValued="true"/> 

답변

1

맞춤법 검사가 별도의 토큰 수행됩니다

다음은 맞춤법 검사 구성 요소입니다. 구문 토큰을 만들기 위해 solr.RemoveDuplicatesTokenFilterFactory 전에 solr.ShingleFilterFactory을 분석에 추가 할 수 있습니다.