Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Solr中配置词干?_Solr_Stemming - Fatal编程技术网

如何在Solr中配置词干?

如何在Solr中配置词干?,solr,stemming,Solr,Stemming,我在solr索引中加上:“美国”。当我按“美国”搜索时,没有结果 如何配置schema.xml以获得结果 当前配置: <fieldType name="text" class="solr.TextField" positionIncrementGap="100"> <analyzer type="index"> <tokenizer class="solr.WhitespaceTokenizerFactory"

我在solr索引中加上:“美国”。当我按“美国”搜索时,没有结果

如何配置schema.xml以获得结果

当前配置:

<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在词干化时保持不变。