在查询侧使用停止词或用空字符串替换单词,将搜索词视为单个单词而不是短语,从而降低了我的短语字段的作用力
如果有人搜索“儿童书”(不带引号),而我们在solr中有一个文档,其类别字段为“儿童书”,那么它将匹配。
因此,如果我们将pf2短语字段中的category字段具有甚至更强的提升,则提升将应用于此搜索。
但是,当我搜索“儿童图书”时,“ for”一词会被正确删除,因为它是一个停用词,但剩下两个词;现在,“书”和“子”分别得到处理,而我的类别短语字段的功能也消失了。
在分析中,我们可以看到停用词过滤器将“ for”替换为一个空格,并且该空格停留在那里,将剩下的两个单词相除。所以我想,如果我在映射FoldToASCII.txt文件中添加“ for”一词并用空字符串替换,那么“ for”将被完全忽略。进行此更改之后,分析工具确实没有显示出“ for”一词的踪影,但在搜索时问题仍然存在(提升幅度稍高,但无明显意义)。这是字段类型:
<fieldType name="some_type" class="solr.TextField" positionIncrementGap="100" multiValued="true" omitNorms="true">
<analyzer type="index">
<charFilter class="solr.MappingCharFilterFactory" mapping="mapping-FoldToASCII.txt"/>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
<analyzer type="query">
<charFilter class="solr.MappingCharFilterFactory" mapping="mapping-FoldToASCII.txt"/>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
</analyzer>