排序规则在 Solr 中无法正常工作
Collations are not working fine in Solr
我正在 Solr 中进行拼写检查。我在我的拼写检查器组件中实现了 Suggestions 和 collations。
Most of the time collations work fine but in few case it fails.
工作:
我试过query:gone wthh thes wnd
:在这个wnd中没有给出建议wind但是collation来了对=飘,hits = 117
不工作:
但是当我尝试 query: gone wthh thes wint
时:在此,wint 确实给出了建议 wind 但 collation 不来 是对的。而不是 gone with the wind 它给出 gone with the west, hits = 1
我也想知道 hits in collations.
是什么
配置:
solrconfig.xml:
<searchComponent name="spellcheck" class="solr.SpellCheckComponent">
<str name="queryAnalyzerFieldType">textSpellCi</str>
<lst name="spellchecker">
<str name="name">default</str>
<str name="field">gram_ci</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">0</int>
<int name="maxInspections">5</int>
<int name="minQueryLength">2</int>
<float name="maxQueryFrequency">0.9</float>
<str name="comparatorClass">freq</str>
</lst>
</searchComponent>
<requestHandler name="/spell" class="solr.SearchHandler" startup="lazy">
<lst name="defaults">
<str name="df">gram_ci</str>
<str name="spellcheck.dictionary">default</str>
<str name="spellcheck">on</str>
<str name="spellcheck.extendedResults">true</str>
<str name="spellcheck.count">25</str>
<str name="spellcheck.onlyMorePopular">true</str>
<str name="spellcheck.maxResultsForSuggest">100000000</str>
<str name="spellcheck.alternativeTermCount">25</str>
<str name="spellcheck.collate">true</str>
<str name="spellcheck.maxCollations">50</str>
<str name="spellcheck.maxCollationTries">50</str>
<str name="spellcheck.collateExtendedResults">true</str>
</lst>
<arr name="last-components">
<str>spellcheck</str>
</arr>
</requestHandler>
Schema.xml:
<field name="gram_ci" type="textSpellCi" indexed="true" stored="true" multiValued="false"/>
</fieldType><fieldType name="textSpellCi" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ShingleFilterFactory" maxShingleSize="5" minShingleSize="2" outputUnigrams="true"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ShingleFilterFactory" maxShingleSize="5" minShingleSize="2" outputUnigrams="true"/>
</analyzer>
</fieldType>
我得到了问题的答案。深入阅读后,我发现了 collations 背后的逻辑。
1) spellcheck.maxCollations:
只是整理个考生对照索引
2) spellcheck.maxCollationTries :
它评估在 spellcheck.maxCollations 时构建的归类。如果我们将 spellcheck.maxCollationTries
的值设置为 low,那么它会提供 更好的排序规则 ,而如果我们设置 spellcheck.maxCollationTries
的值高,然后它提供更多的排序结果,但它损害性能。
因此,通过增加 spellcheck.maxCollationTries
的值,它给出了 gone wthh thes wint 的排序规则 随风而去 但我再说一遍,它伤害 性能。
我正在 Solr 中进行拼写检查。我在我的拼写检查器组件中实现了 Suggestions 和 collations。
Most of the time collations work fine but in few case it fails.
工作:
我试过query:gone wthh thes wnd
:在这个wnd中没有给出建议wind但是collation来了对=飘,hits = 117
不工作:
但是当我尝试 query: gone wthh thes wint
时:在此,wint 确实给出了建议 wind 但 collation 不来 是对的。而不是 gone with the wind 它给出 gone with the west, hits = 1
我也想知道 hits in collations.
是什么配置:
solrconfig.xml:
<searchComponent name="spellcheck" class="solr.SpellCheckComponent">
<str name="queryAnalyzerFieldType">textSpellCi</str>
<lst name="spellchecker">
<str name="name">default</str>
<str name="field">gram_ci</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">0</int>
<int name="maxInspections">5</int>
<int name="minQueryLength">2</int>
<float name="maxQueryFrequency">0.9</float>
<str name="comparatorClass">freq</str>
</lst>
</searchComponent>
<requestHandler name="/spell" class="solr.SearchHandler" startup="lazy">
<lst name="defaults">
<str name="df">gram_ci</str>
<str name="spellcheck.dictionary">default</str>
<str name="spellcheck">on</str>
<str name="spellcheck.extendedResults">true</str>
<str name="spellcheck.count">25</str>
<str name="spellcheck.onlyMorePopular">true</str>
<str name="spellcheck.maxResultsForSuggest">100000000</str>
<str name="spellcheck.alternativeTermCount">25</str>
<str name="spellcheck.collate">true</str>
<str name="spellcheck.maxCollations">50</str>
<str name="spellcheck.maxCollationTries">50</str>
<str name="spellcheck.collateExtendedResults">true</str>
</lst>
<arr name="last-components">
<str>spellcheck</str>
</arr>
</requestHandler>
Schema.xml:
<field name="gram_ci" type="textSpellCi" indexed="true" stored="true" multiValued="false"/>
</fieldType><fieldType name="textSpellCi" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ShingleFilterFactory" maxShingleSize="5" minShingleSize="2" outputUnigrams="true"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ShingleFilterFactory" maxShingleSize="5" minShingleSize="2" outputUnigrams="true"/>
</analyzer>
</fieldType>
我得到了问题的答案。深入阅读后,我发现了 collations 背后的逻辑。
1) spellcheck.maxCollations:
只是整理个考生对照索引
2) spellcheck.maxCollationTries :
它评估在 spellcheck.maxCollations 时构建的归类。如果我们将 spellcheck.maxCollationTries
的值设置为 low,那么它会提供 更好的排序规则 ,而如果我们设置 spellcheck.maxCollationTries
的值高,然后它提供更多的排序结果,但它损害性能。
因此,通过增加 spellcheck.maxCollationTries
的值,它给出了 gone wthh thes wint 的排序规则 随风而去 但我再说一遍,它伤害 性能。