如何在Solr中配置词干?
我在solr索引中加上:“美国”。当我按“美国”搜索时,没有结果 如何配置schema.xml以获得结果 当前配置:如何在Solr中配置词干?,solr,stemming,Solr,Stemming,我在solr索引中加上:“美国”。当我按“美国”搜索时,没有结果 如何配置schema.xml以获得结果 当前配置: <fieldType name="text" class="solr.TextField" positionIncrementGap="100"> <analyzer type="index"> <tokenizer class="solr.WhitespaceTokenizerFactory"
<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" />
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt" />
<filter class="solr.RemoveDuplicatesTokenFilterFactory" />
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" />
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt" />
<filter class="solr.RemoveDuplicatesTokenFilterFactory" />
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldType>
为什么要有两个词干分析器?
尝试从两种分析器类型中删除
EnglishPorterFilterFactory
(已弃用),重新生成索引,然后尝试搜索American是否会生成America
如果这不起作用,你可以尝试的另一件事是删除两个词干分析器过滤器,并用
language=“English”
添加SnowballPorterFilterFactory
。你必须为分析器使用一个词干分析器,EnglishPorterFilterFactory
已被弃用,因为@Marko已经提到过。所以你应该从分析器中删除这个
我用于索引和查询分析器-
<fieldType name="text_stem">
<analyzer>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.SnowballPorterFilterFactory"/>
<!-- other filters -->
</analyzer>
</fieldType>
也一样。尝试了两种方法。相同的索引:“插槽”当我按“插槽”、“插槽”、“插槽”搜索时会有结果。索引:“American”没有“American”的结果。您应该做的第一件事是打开Solr admin web应用程序,进入分析并选择字段类型/名称(检查详细的输出字段),在索引字段中键入American,在查询字段中键入America。这将允许您查看它是如何被精确分析的,逐个过滤器。要获得更详细的分析,请下载(如果您还没有)(它是可执行的jar)。启动它并加载Lucene索引。用它来找出你的内容到底是如何被屏蔽的以及其他许多有用的信息……你在两次尝试之间对内容重新编制了索引,对吗?好的,现在您可以(使用Admin>Analysis)确切地看到每个词干分析器对单词“American”有哪些影响。根据本文,American在词干化时保持不变。