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排序的,而是按照相关度或者人工干预的方式去排序的。