ZPY博客

Solr8精确匹配的问题

项目需求要做一个类似于百度百科的搜索,有进入词条按钮,相当于输入完整的词条名可以直接进入到该词条的页面。

于是想到了用solr精确匹配,查了下资料说是用双引号把关键词引起来就行了。比如:q=name:"关键词"。

但在实现测试的过程中发现有问题。比如我录入一个词条叫“张家界大成山水国际大酒店”。这时输入完整的“张家界大成山水国际大酒店”是可以搜到这个词条的,这没问题。但我输入关键词"国际"居然也可以搜出这个词条。。这明显就不是我想要的,我想要的是如果索引库里没有一个叫“国际”的词条,那么搜索出来的结果就是0件。显然这种所谓的精确匹配不满足我的需求。

但问题是,我google百度了半天,精确匹配全是这种方法,没有其它的方法,让我很是无语。于是我想到底是哪里出了问题,为何所谓的精确匹配不精确?后来想了想,发现我对solr的精确匹配有误解。solr所谓的精确匹配是指,对输入的关键词不再拆分来匹配结果。举个例子,我输入“国际大酒店”这个关键词,精确匹配就是把“国际大酒店”这个词当做一个词来匹配所有词条里完整含有这五个字的词条。而一般匹配就是会把“国际大酒店”拆分成“国际”+“大酒店”+“酒店”三个词来匹配所有的词条。

我试了下百度百科,它没有这个问题的原因是它里面录入了类似于“国际”和“酒店”这种基础的词条,所以搜索“国际”就会进入该词条。但我们现在的索引库里是不可能把所有基础词条都录进去的。。

无奈只能这样了。如果大家有好的解决方法请不吝赐教。。