我遇到了solr中集成的拼写检查程序的问题。 我(现在)有两个核心,配置了相同的solrconfig.xml(具有拼写检查器的正确设置)和稍微不同的XML(具有相同的拼写检查配置)。
问题在于,对于其中一个核心,拼写检查工作完美,而另一个则不然。 对于来自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 :(得分:0)
似乎copyField
不能成为另一个copyField
的来源。
针对错误的架构将源从copyfield
更改为field
,它解决了问题。