2017-09-18 11 views
0

나는 spellcheck component을 사용하는 Solr 코어 (Solr 버전 6.4.1)를 가지고 있습니다. 문제는 30k 미만의 항목이 있으면 맞춤법 검사기가 정상적으로 작동합니다. 문서 수를 30,000 개 이상으로 늘리면 맞춤법 검사 결과가 반환되지 않습니다. maxQueryFrequency 또는 thresholdTokenFrequency과 같이 solrconfig.xml 파일의 매개 변수를 알고 있지만 문제를 해결하지 못했습니다.Solr 10k보다 큰 인덱스에 대한 맞춤법 검사 또는 결과 반환

나는 또한 다음을 읽었습니다 : Apache Solr : Search is not returning result for large document indexed, Solr spellchecker not returning any results, solr suggester not returning any resultsSolr spellcheckin randomly working 그러나 이들은 어느 것도 도움이되지 않았습니다.

solrconfig.xml의 관련 부분입니다 :

<searchComponent name="spellcheck" class="solr.SpellCheckComponent"> 
    <str name="queryAnalyzerFieldType">text_general</str> 
    <lst name="spellchecker"> 
    <str name="name">default</str> 
    <str name="field">_spellcheck_</str> 
    <str name="classname">solr.DirectSolrSpellChecker</str> 
    <str name="distanceMeasure">internal</str> 
    <float name="accuracy">0.5</float> 
    <int name="maxEdits">2</int> 
    <int name="minPrefix">1</int> 
    <int name="maxInspections">5</int> 
    <int name="minQueryLength">4</int> 
    <float name="maxQueryFrequency">0.1</float> 
    <float name="thresholdTokenFrequency">.0000001</float> 
    </lst> 
</searchComponent> 

하고, 내 요청 처리기에서 :

<bool name="spellcheck">true</bool> 
<str name="spellcheck.dictionary">default</str> 
<str name="spellcheck.extendedResults">false</str> 
<str name="spellcheck.count">5</str> 
<str name="spellcheck.alternativeTermCount">2</str> 
<str name="spellcheck.maxResultsForSuggest">5</str> 
<str name="spellcheck.collate">true</str> 
<str name="spellcheck.collateExtendedResults">true</str> 
<str name="spellcheck.maxCollationTries">5</str> 
<str name="spellcheck.maxCollations">3</str> 

_spellcheck_는 (소스 = "*")를 CopyField입니다 , 다음과 같이 정의되는 text_general로 색인됩니다 :

<fieldType name="text_general" class="solr.TextField" > 
    <analyzer type="index"> 
    <charFilter class="solr.HTMLStripCharFilterFactory" /> 
    <tokenizer class="solr.ClassicTokenizerFactory" /> 
    <filter class="solr.ClassicFilterFactory" /> 
    <filter class="solr.ASCIIFoldingFilterFactory" /> 
    <filter class="solr.LowerCaseFilterFactory" /> 
    <filter class="solr.TrimFilterFactory" /> 
    <filter class="solr.HyphenatedWordsFilterFactory" /> 
    </analyzer> 
    <analyzer type="query"> 
    <charFilter class="solr.HTMLStripCharFilterFactory" /> 
    <tokenizer class="solr.ClassicTokenizerFactory" /> 
    <filter class="solr.ClassicFilterFactory" /> 
    <filter class="solr.ASCIIFoldingFilterFactory" /> 
    <filter class="solr.LowerCaseFilterFactory" /> 
    <filter class="solr.TrimFilterFactory" /> 
    <filter class="solr.HyphenatedWordsFilterFactory" /> 
    </analyzer> 
</fieldType> 

어떤 조언이 필요합니까?

답변

0

더 많은 작업을 마친 후에 나는 maxResultForSuggest 매개 변수 인 책임이 있음을 알았습니다. 5의 디폴트 값은 내 검색 핸들러 (100)로 설정, 내 데이터 세트의 크기에 적절하지 않았다 내 문제 해결 :이 사람을 도움이 될 것입니다

<str name="spellcheck.maxResultsForSuggest">100</str> 

희망을.