请教lucene的同义词问题

请教lucene的同义词问题,第1张

如果你是不考虑这两个词的位置关系,也就是说只要文档中同时包含"你"和“好”这两个词的,不管这两个词之间是否有其他词存在的情况,如”你是一个好人“这样的情况也返回,那么采用BooleanQuery,

BooleanQuery booleanQuery11 = new BooleanQuery()

booleanQuery11.add(new TermQuery(new Term("contents", ”你“)), BooleanClause.Occur.MUST)

booleanQuery11.add(new TermQuery(new Term("contents", ”好“)), BooleanClause.Occur.MUST)

如果你就想搜索"",也就是说"你"和“好”这两个词同时出现并且紧挨着,那么采用PhraseQuery

PhraseQuery query333 = new PhraseQuery()

query333.setSlop(0)

query333.add(new Term("contents", ”你“);

query333.add(new Term("contents", ”好“);

这个要看你的搜索关键词是什么,采用的分词器是什么,比如你搜索的关键词是“搜索引擎”,如果采用的分词器的分词结果就包含“搜索引擎‘这个词,那么采用TermQuery就可以了;如果采用的分词器的分词结果不是“搜索引擎‘这个词,而是”搜索“和”引擎“这两个词,那么要采用PhraseQuery,setSlop(0),这样就可以搜索出同时包含”搜索“和”引擎“这两个词并且这两个词紧挨着的所有文章了。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/bake/11699039.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存