2012-06-19 6 views
4

저는 Solr을 처음 사용하도록 요구하는 응용 프로그램을 작성하고 있습니다. 올바른 데이터를 인덱싱하고 원하는대로 쿼리를 설정했지만 은 맞춤법 검사가 올바르게 작동하는 것 같습니다. 어떤 질문을하든간에 맞춤법 검사기는 제안 사항을 반환하지 않습니다. 내 solrconfig와 schema.xml의 관련 부분을 포함 시켰습니다.Solr spellchecker가 결과를 반환하지 않습니다.

의 schema.xml

<fieldType name="textSpell" class="solr.TextField" positionIncrementGap="100" omitNorms="true"> 
    <analyzer type="index"> 
    <charFilter class="solr.HTMLStripCharFilterFactory"/> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    <filter class="solr.StandardFilterFactory"/> 
    </analyzer> 
    <analyzer type="query"> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> 
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    <filter class="solr.StandardFilterFactory"/> 
    </analyzer> 
</fieldType> 

<!-- CUT --> 

<field name="spell" type="textSpell" indexed="true" stored="true" /> 

solrconfig.xml

<requestHandler name="/select" class="solr.SearchHandler"> 
    <lst name="defaults"> 
    <str name="defType">edismax</str> 
    <str name="spellcheck.dictionary">default</str> 
    <str name="spellcheck.onlyMorePopular">false</str> 
    <!-- <str name="spellcheck.extendedResults">false</str> --> 
    <str name="spellcheck.count">3</str> 

    <str name="qf"> 
     frontlist_flapcopy^0.5 title^2.0 subtitle^1.0 series^1.5 author^3.0 frontlist_ean^6.0 
    </str> 
    <str name="pf"> 
     frontlist_flapcopy^0.5 title^2.0 subtitle^1.0 series^1.5 author^3.0 frontlist_ean^6.0 
    </str> 
    <str name="fl"> 
     title,subtitle,series,author,eans,formats,prices,frontlist_ean,onsaledate,imprint,frontlist_flapcopy 
    </str> 
    <str name="mm"> 
     2&lt;-1 5&lt;-2 6&lt;90% 
    </str> 
    <int name="ps">100</int> 
    <bool name="hl">true</bool> 
    <str name="q.alt">*:*</str> 
    <str name="hl.fl">title,subtitle,series,author,frontlist_flapcopy</str> 
    <str name="f.title.hl.fragsize">0</str> 
    <str name="f.title.hl.alternateField">title</str> 
    <str name="f.subtitle.hl.fragsize">0</str> 
    <str name="f.subtitle.hl.alternateField">url</str> 
    <str name="f.series.hl.fragsize">0</str> 
    <str name="f.series.hl.alternateField">url</str> 
    <str name="f.author.hl.fragsize">0</str> 
    <str name="f.author.hl.alternateField">url</str> 
    <str name="f.frontlist_flapcopy.hl.fragsize">0</str> 
    <str name="f.frontlist_flapcopy.hl.alternateField">url</str> 

    <str name="echoParams">explicit</str> 
    <float name="accuracy">0.7</float> 
    </lst> 

    <lst name="appends"> 
     <str name="fq">forsaleinusa:true</str> 
    </lst> 
    <arr name="last-components"> 
     <str>spellcheck</str> 
    </arr> 
</requestHandler> 

<!-- CUT --> 

<searchComponent name="spellcheck" class="solr.SpellCheckComponent"> 
    <lst name="spellchecker"> 
    <str name="name">default</str> 
    <str name="classname">solr.IndexBasedSpellChecker</str> 
    <str name="field">spell</str> 
    <str name="spellcheckIndexDir">/path/to/my/spell/index</str> 
    <str name="accuracy">0.7</str> 
    <float name="thresholdTokenFrequency">.0001</float> 
    </lst> 

    <lst name="spellchecker"> 
    <str name="name">jarowinkler</str> 
    <str name="classname">solr.IndexBasedSpellChecker</str> 
    <str name="field">spell</str> 
    <str name="distanceMeasure">org.apache.lucene.search.spell.JaroWinklerDistance</str> 
    <str name="spellcheckIndexDir">/path/to/my/spell/index</str> 
    </lst> 

    <str name="queryAnalyzerFieldType">textSpell</str> 
</searchComponent> 

내가 다음에/경로 생성 된 파일을 살펴볼 http://localhost:8983/solr/select/?q=query&spellcheck.build=true로 이동 /에/내/주문/색인 segments.gen과 segments_1이 있는데, 둘 다 몇 바이트의 이진 데이터 만 포함합니다. 내가 쿼리를 입력하고 쿼리 문자열에 &spellcheck=true을 추가 할 때 다음, 나는 상관없이 내 쿼리, 제안을 얻을 :

<lst name="spellcheck"> 
    <lst name="suggestions"/> 
</lst> 

여기에 무슨 일이 일어나고 있는지 어떤 생각?

답변

2

내가 얼마 전에이 문제를 해결하는 결국,하지만 내 기억에, 문제는 내가 여러 <copyField/>을 사용하고 있었다이었다 지시문을 사용하여 "맞춤법"필드에 데이터를 복사했지만 해당 필드에 multiValued="true"을 설정하지 않았습니다. 맞춤법 검사 필드를 여러 값으로 만들었을 때 매력처럼 작동했습니다.

관련 문제