2017-09-14 141 views
0

我遇到了solr中集成的拼寫檢查器的問題。 我有(現在)兩個核心,配置相同的solrconfig.xml(具有拼寫檢查器的正確設置)和稍微不同的XML(具有拼寫檢查器相同的配置)。Solr spellcheckin隨機工作

問題是,對於其中一個核心拼寫檢查器完美工作,對於其他沒有。 對於Solr Admin中沒有工作的人,我可以看到字段「拼寫」(拼寫檢查使用的字段)被索引,但沒有存儲。

有什麼想法?

我不認爲我將能夠發佈xml文件,因爲它們不屬於我。

謝謝大家

編輯:

Solrxml.conf

<requestHandler name="/select" class="solr.SearchHandler"> 
    ... 
    </requestHandler> 

    <searchComponent name="spellcheck" class="solr.SpellCheckComponent"> 
    <lst name="spellchecker"> 
    <str name="classname">solr.IndexBasedSpellChecker</str> 
    <!-- field to use --> 
    <str name="field">spelling</str> 
    <!-- buildOnCommit|buildOnOptimize --> 
    <str name="buildOnCommit">true</str> 
    <!-- $solr.solr.home/data/spellchecker--> 
    <str name="spellcheckIndexDir">./spellchecker</str> 
    <str name="accuracy">0.7</str> 
    <float name="thresholdTokenFrequency">.0001</float> 
    </lst> 
</searchComponent> 

schema.xml中(工作)

<schema name="docs" version="1.5"> 
... 
<field name="fooCore1"  type="text"    indexed="true" stored="true" multiValued="false" /> 

    <!-- Spellcheck --> 
    <field name="spelling"    type="text"    indexed="true" stored="true" multiValued="false" /> 
    <copyField source="fooCore1" dest="spelling" /> 
    ... 

    ... 
    <solrQueryParser defaultOperator="OR"/> 
</schema> 

schema.xml中(不工作)

<schema name="docs" version="1.5"> 
    ... 
     <field name="fooFoo"    type="text"    indexed="true" stored="true" multiValued="false" /> 
     <copyField source="fooFoo"  dest="fooCore" maxChars="300000" /> 
    <!-- Spellcheck --> 
    <field name="fooCore2"    type="text"    indexed="true" stored="true" multiValued="false" /> 
    <copyField source="fooCore2" dest="spelling" maxChars="300000" /> 
    ... 
    </schema> 

第二個模式中的除spelling之外的所有字段都存儲並使用它們的值編制索引。

即使嘗試創建第三個核心,但它都沒有工作。

+0

您是否重建拼寫檢查索引?如何配置拼寫檢查器? – MatsLindh

+0

該字典爲「IndexBasedSpellChecker」,其中包含對doc提交的更新。拼寫檢查索引被重建(通過查詢Solr Admin)。我甚至嘗試過一個新的核心,但它也有同樣的問題。兩個模式之間唯一的區別是不工作的模式有一個'copyField'屬性作爲源。 PS:運行Solr 5.4.1 – Ghesio

+0

等待 - 複製域屬性作爲源?是否有任何東西被插入到該字段中?你能搜索它正在構建的領域嗎?這兩個字段是如何定義的? – MatsLindh

回答

0

看起來好像copyField不能作爲另一個copyField的來源。

將來源從copyfield更改爲field錯誤的模式,它解決了問題。