我使用Solr 版本7.4 和StopFilterFactory
,并且我希望排除停用词,除非搜索词在双引号内。
例如,当我搜索"to be or not to be"
时将不会检索任何文档。
我知道在较旧版本中,我可以使用 enablePositionIncrements="true"
,但现在已弃用。
我的managed-schema
文件。
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100" multiValued="false">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
<filter class="solr.SynonymGraphFilterFactory" expand="true" ignoreCase="true" synonyms="synonyms.txt"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
有没有办法做到这一点?
答案 0 :(得分:0)
要实现此目的,您可能需要有2个单独的字段。
定义字段1的字段类型在定义中具有stopwordfilterfactory。
在字段中定义不带StopFilterFactory的字段类型。
如果您没有双引号就不会搜索请求,则会在第一个字段上进行搜索。
当您有带双引号的搜索请求时,搜索将在第二个字段field2上执行。