你是说Solr(拼写检查组件)
我在应用程序中使用solr,并集成了拼写检查组件,但我遇到了一些问题: 第一: 当我输入一个用空格分隔的术语时,它们会给我每个术语的更正 例如:“watters”=>“什么术语”,但真正的含义是watters 第二: 当我用一些错误的术语键入一些短语时。尽管其他术语是正确的,但它们对所有术语都应用了拼写 例如:“语言中的差异使用约定” =>“语言使用的差异转换” 真正的问题是“语言使用习惯的差异” 这是我在solrconfig.xml中的配置:你是说Solr(拼写检查组件),solr,autocorrect,spell-checking,Solr,Autocorrect,Spell Checking,我在应用程序中使用solr,并集成了拼写检查组件,但我遇到了一些问题: 第一: 当我输入一个用空格分隔的术语时,它们会给我每个术语的更正 例如:“watters”=>“什么术语”,但真正的含义是watters 第二: 当我用一些错误的术语键入一些短语时。尽管其他术语是正确的,但它们对所有术语都应用了拼写 例如:“语言中的差异使用约定” =>“语言使用的差异转换” 真正的问题是“语言使用习惯的差异” 这是我在solrconfig.xml中的配置: <searchComponent name=
<searchComponent name="spellcheck" class="solr.SpellCheckComponent">
<str name="queryAnalyzerFieldType">textSpell</str>
<lst name="spellchecker">
<str name="name">default</str>
<str name="field">spell</str>
<str name="spellcheckIndexDir">spellchecker</str>
</lst>
</searchComponent>
<requestHandler name="/spell" class="solr.SearchHandler" startup="lazy">
<lst name="defaults">
<str name="spellcheck.onlyMorePopular">true</str>
<str name="spellcheck.extendedResults">false</str>
<str name="spellcheck.count">1</str>
</lst>
<arr name="last-components">
<str>spellcheck</str>
</arr>
</requestHandler>
文字拼写
违约
拼写
拼写检查器
真的
假的
1.
拼写检查
Schema.xml:
字段类型:
<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="1" splitOnCaseChange="1"/>
<filter class="solr.ASCIIFoldingFilterFactory" />
<filter class="solr.SnowballPorterFilterFactory" language="English"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="0"/>
<filter class="solr.ASCIIFoldingFilterFactory" />
<filter class="solr.SnowballPorterFilterFactory" language="English"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
</analyzer>
<analyzer type="multiterm" >
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.ASCIIFoldingFilterFactory" />
</analyzer>
</fieldType>
<fieldType name="textSpell" class="solr.TextField" positionIncrementGap="100" omitNorms="true">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
<filter class="solr.LowerCaseFilterFactory"/>
<!--<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>-->
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>
</fieldType>
字段:
<field name="title" type="text" indexed="true" stored="true" termVectors="true"/>
<field name="spell" type="textSpell" indexed="true" stored="true" multiValued="true"/>
复制字段
<copyField source="title" dest="spell"/>
谢谢你的帮助
为您可以使用的第一个问题干杯
至于你的第二个问题,你可以将
true
设置为false
,看看这是否达到了预期的效果。嗨,克莱恩,谢谢你的回答,我使用appach-solr3.5与php交互。你能告诉我如何使用这个补丁吗?CheersIs WordBreakSpellChecker在appach-solr3.5中是标准的?它不是标准的。您需要将其应用于源代码并构建新的jar/war.Hi,我是windows平台上的php程序员,所以java开发对我来说是新的。你能告诉我如何在ApachSolr上构建新的jar/war吗?搜索后,我找到了spellCheckComponent.class文件,但那里有ise spellCheckComponent.java文件。我打开了/dist pathNice上存在的apache-solr-3.5.0.war问题……除了官方文档之外,你有没有其他教程可以用来了解lucene的更多信息索尔·佩奇?Ty@Sebastian:基础教程:。高级教程:。例如:。祝你好运,希望能有所帮助;)书籍:。