我的机器中有两个版本的solr。说SolrVer1
和SolrVer2
SolrVer1
已应用于字段类型text_en_splitting
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt" ignoreCase="true"/>
<filter class="solr.PorterStemFilterFactory" ignoreCase="true"/>
SolrVer2
已应用于字段类型text_en_splitting
<filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/>
它对于常规搜索几乎相同,但在使用通配符搜索时,通配符搜索不会在SolrVer1
上提供带语法的结果
与使用ray*
进行搜索一样,与SolrVer1
相比,SolrVer2
返回的数据要少得多。当我观察结果时,我发现SolrVer1
不返回仅包含ray
和rays
的数据。
我不知道应该在哪里使用SnowballPorterFilterFactory
以及我应该使用PorterStemFilterFactory
的位置。它们的优点和缺点是什么?
有人能对这种行为有所了解吗?
由于
答案 0 :(得分:1)
需要知道ray
,rays
的词干分析器的输出结果。
尝试在Porter stemmer在线工具中提取它们:http://qaa.ath.cx/porter_js_demo.html。它输出rai
!这就是你没有与Porter stemmer进行ray*
匹配的原因。
这里有一个雪球塞的工具:http://snowball.tartarus.org/demo.php。
这会为ray
和ray
输出rays
,这就是您获得结果的原因。
您可能需要阅读此内容以比较两个词干分析器:http://snowball.tartarus.org/texts/introduction.html
看起来像雪球的目的是解决波特这样的缺点。
答案 1 :(得分:0)
On wildcard and fuzzy searches, no text analysis is performed on the search word.
由于在查询时没有对wilcard搜索进行分析,因此在查询时间内将应用词干分析器 根据限制器的产生结果,结果会有所不同。