Lucene分词查询

发布于 2021-11-15 14:06:53 字数 253 浏览 715 评论 7

在使用Lucene进行分词查询时遇到如下需求:

当用户输入“李宁 羽毛球”时,需要查出数据库中同时满足“李宁”和“羽毛球”两个条件的商品记录(即要求应该是与的关系)。

在项目中使用的是IKAnalyzer分词器,但是查出来的结果是却是或的关系,即查询出的结果可能只“李宁”或者“羽毛球”的记录,比如会出现“胜利羽毛球“相关的记录或者“李宁球鞋”相关的记录。

这样的问题如何解决?在Lucene中如何进行“与查询”?

 

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

明月松间行 2021-11-17 13:30:38

谢谢推荐~

躲猫猫 2021-11-17 13:28:51

如何进行查询,主要是看你在拼接query条件的时候怎么使用条件组合方式。

除了需要注意进行索引创建所使用的分词和查询所使用的分词一致之外,到没别的了。

既然在使用lucene给你推荐个其他的,也许你以后会使用到,solr很不错的东西。

http://wiki.apache.org/solr/ 创建索引更简单,查询的时候,可以直接拼接条件用and和or这种形式

SolrQuery query = new SolrQuery();
query.setQuery("admindivCode:[" + down + " TO " + up+ "] AND name:" + business_name + "");

基于lucene的,放心使用!呵呵

 

 

惜醉颜 2021-11-17 13:22:20
Analyzer analyzer=new IKAnalyzer();
QueryParser qp = new QueryParser(Version.LUCENE_35, fieldName, analyzer);
qp.setDefaultOperator(QueryParser.AND_OPERATOR);
Query query = qp.parse(keyWord);

analyzer就是IK的了,上面除了这个是IK的,其余都是lucene的,setDefaultOperator(QueryParser.AND_OPERATOR)就搞定分词后的“与”了,IK只是用来分词,查还是lucene自己去查的好。
上面只到Query,后面怎么继续应该不用我说了吧,还是上面说的,IK只是用来分词。。。

瀞厅☆埖开 2021-11-17 12:58:36

应该是自定义分词规则吧

本王不退位尔等都是臣 2021-11-17 11:40:41

红薯这个是多个查询域的与关系查询,分词的与查询还是和上面那个同学说的~

卸妝后依然美 2021-11-17 09:23:58

与查询:

BooleanQuery complexQuery = new BooleanQuery();
complexQuery.add(query1, BooleanClause.Occur.MUST);
complexQuery.add(query2, BooleanClause.Occur.MUST);
挽清梦 2021-11-15 15:47:21
Analyzer analyzer=new IKAnalyzer();
QueryParser qp = new QueryParser(Version.LUCENE_35, fieldName, analyzer);
qp.setDefaultOperator(QueryParser.AND_OPERATOR);
Query query = qp.parse(keyWord);

analyzer就是IK的了,上面除了这个是IK的,其余都是lucene的,setDefaultOperator(QueryParser.AND_OPERATOR)就搞定分词后的“与”了,IK只是用来分词,查还是lucene自己去查的好。
上面只到Query,后面怎么继续应该不用我说了吧,还是上面说的,IK只是用来分词。。。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文