攻城狮小白

 

lucene复合条件查询案例——查询name域 或 description域 包含lucene关键字的两种方式

方式一:使用语法表达式查询

1 //查询name域 或 description域包含lucene关键字
2 QueryParser queryParser = new QueryParser("name", new StandardAnalyzer());
3 Query parse = queryParser.parse("name:lucene description:lucene");
4 Sort sort = new Sort(new SortField("id", Type.INT));
5 TopDocs topDocs = indexSearcher.search(parse, 10, sort);

方式二:使用lucene提供的复合条件

1 //查询name域 或 description域包含lucene关键字
2 String[] fields = {"name","description"};
3 MultiFieldQueryParser queryParser = new MultiFieldQueryParser(fields, new StandardAnalyzer());
4 Query parse = queryParser.parse("lucene");
5 Sort sort = new Sort(new SortField("id", Type.INT));
6 TopDocs topDocs = indexSearcher.search(parse, 10, sort);

其实按照id排序没什么必要,毕竟搜索引擎查询的结果一般是不会按照id排序的,而是按照相关度或者人工干预的方式去排序的。

posted on 2017-12-17 11:07  攻城狮小白  阅读(208)  评论(0编辑  收藏  举报

导航