SOLR查询匹配关键词的方式

SOLR在查询时,无引号关键词按OR匹配,双引号内关键词按AND匹配。若分词后停用词被过滤,导致匹配不准确,可将关键词加入自定义词库或禁用StopFilterFactory。修改SOLR的managed-schema文件,注释掉StopFilterFactory,重启并重新索引文档。自定义词典配置在hanlp.properties,修改词典需删除对应bin文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果在字段后直接写关键词,solr对条件关键词分词后,各分词之间按照OR的关系进行匹配

如果查询条件关键词用半角双引号括叫起来,则分词间用AND关系进行匹配

尽管使用双引号括起来,分词间可以按照与的关系进行查询,但是有一种情况是,分词后,有些词会被停用词过滤掉,从而只剩下有效词,这样也会造成匹配过多的情况,解决办法是:将整个条件词,配置到自定义词库中,这样就不会被分词,可以按照整改词进行匹配。或者配置SOLR不过滤停用词,配置如下

编辑文件

${SOLR_HOME}\server\solr\new_core\conf\managed-schema

找到需要查询的fieldType,去掉solr.StopFilterFactory的配置,如下:

<fieldType name="text_hanlp" class="solr.TextField" >
    <analyzer type="index">
         <tokenizer class="com.hankcs.lucene.HanLPTokenizerFactory"  enableIndexMode="true"/>
         <!--<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true"/>-->
    </analyzer>
    <analyzer type="query">
        <tokenizer class="com.hankcs.lucene.HanLPTokenizerFactory" enableIndexMode="false"/>
        <!--<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true"/>-->
    </analyzer>
</fieldType>

将solr.StopFilterFactory注释掉,重启solr,并且,文档必须重新索引的才能生效,之前索引的不能生效了。

 

另外,solr的分词词典配置在:{SOLR_HOME}\server\resources下,以hanlp为例:此目录下放置hanlp.properties,在hanlp.properties中,指定自定义词典,停用词词典等,如:

对于hanlp来说,修改词典后,要使词典生效,要删除对应的bin文件

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大柳树伯爵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值