Solr8精确匹配的问题

  • 2
  • 浏览量:571 次
  • A+
所属分类:全文检索

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

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

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

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

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

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

ZPY

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:2   其中:访客  2   博主  0

    • avatar Alan 0

      是不是可以这样做 在 “国际” 这个词做全词匹配的时候,我们让他左右是空格才行,也就是 整个词的间距要 > 0,也就是 near query 中的词间距 > 0

      • avatar yan 0

        我也想问同样的问题。你找到方法了吗?