Solr 停用词已编入索引但 returns 0 个结果
Solr stopwords gets indexed but returns 0 results
我尽量不为所有文本字段索引停用词。
我的托管-schema.xml 看起来像:
<fieldType name="text_en" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" words="lang/stopwords_en.txt" ignoreCase="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPossessiveFilterFactory"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldType>
<field name="ItemDesc" type="text_en" multiValued="false" indexed="true" stored="false"/>
然而,当我查看 solr 字段描述时,它确实向我显示了 "load term info" 选项卡中的停用词 screenshot
然而,当我点击像 "on" 这样的停用词时,它给了我 0 个结果。 screenshot
那么 solr 是否索引停用词?
我查看了 solr 文档,它说:"Clicking that button will show the top N terms that are in the index for that field"
这意味着像 "on" 这样的停用词被编入索引,但是当我点击它时 returns 只有所有停用词的结果为 0。
所以我终于想通了这个问题。
模式文件正确地过滤掉了停用词。
问题是 PorterstemFilterfactory,它将 "one" 到 "on" 和 "use" 到 "us" 等关键字词干化,并对它们进行索引,使停用词看起来没有被过滤掉。
我不知道这是 Porterstem 中的错误还是应该是这样。
我尽量不为所有文本字段索引停用词。
我的托管-schema.xml 看起来像:
<fieldType name="text_en" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" words="lang/stopwords_en.txt" ignoreCase="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPossessiveFilterFactory"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldType>
<field name="ItemDesc" type="text_en" multiValued="false" indexed="true" stored="false"/>
然而,当我查看 solr 字段描述时,它确实向我显示了 "load term info" 选项卡中的停用词 screenshot
然而,当我点击像 "on" 这样的停用词时,它给了我 0 个结果。 screenshot
那么 solr 是否索引停用词?
我查看了 solr 文档,它说:"Clicking that button will show the top N terms that are in the index for that field" 这意味着像 "on" 这样的停用词被编入索引,但是当我点击它时 returns 只有所有停用词的结果为 0。
所以我终于想通了这个问题。 模式文件正确地过滤掉了停用词。 问题是 PorterstemFilterfactory,它将 "one" 到 "on" 和 "use" 到 "us" 等关键字词干化,并对它们进行索引,使停用词看起来没有被过滤掉。 我不知道这是 Porterstem 中的错误还是应该是这样。