Lucene&&solr02
程序员文章站
2022-07-01 09:18:30
...
MatchAllDocsQuery
使用MatchAllDocsQuery查询索引目录中的所有文档
public void testMatchAllDocsQuery()throws Exception{
//指定索引库存放的路径
Directory directory = FSDirectory.open(new File("G:\\temp\\index"));
//创建一个IndexReader对象
IndexReader indexReader = DirectoryReader.open(directory);
//创建IndexSearcher对象
IndexSearcher indexSearcher = new IndexSearcher(indexReader);
//创建一个Query对象
Query query = new MatchAllDocsQuery();
//查询索引库
TopDocs topDocs = indexSearcher.search(query,100);
ScoreDoc[] scoreDocs = topDocs.scoreDocs;
System.out.println("查询结果总记录数" +topDocs.totalHits);
//遍历查询结果
for (ScoreDoc scoreDoc : scoreDocs) {
int docId= scoreDoc.doc;
//通过id查询文档对象
Document document = indexSearcher.doc(docId);
//取属性
System.out.println(document.get("name"));
System.out.println(document.get("path"));
System.out.println(document.get("content"));
System.out.println(document.get("size"));
}
indexReader.close();
}
NumericRangeQuery
数值范围查询
@Test
public void testNumericRangeQuery()throws Exception{
//创建一个数值范围查询
//参数1:要查询的域 参数2:最小值 参数3:最大值 参数4:是否包含最小值 参数5:是否包含最大值
Query query =NumericRangeQuery.newLongRange("size", 0l, 1000l, true, true);
//打印结果
printResult(getIndexSearcher(), query);
}
BooleanQuery
public void testBooleanQuery()throws Exception{
//创建一个BooleanQuery对象
BooleanQuery query = new BooleanQuery();
//创建子查询,文件大于1000小于10000
Query query1 =NumericRangeQuery.newLongRange("size", 1000l, 10000l, true, true);
//文件名中包含mybatis关键字
Query query2 = new TermQuery(new Term("name","mybatis"));
//添加到BooleanQuery对象中
query.add(query1,Occur.MUST);
query.add(query2,Occur.MUST);
//执行查询
printResult(getIndexSearcher(), query);
}
Occur.MUST:必须满足此条件,相当于and
Occur.SHOULD:应该满足,但是不满足也可以,相当于or
Occur.MUST_NOT:必须不满足。相当于not
使用QueryParser查询
public void testQueryParser()throws Exception{
//创建一个QueryParser对象。 参数1:默认搜索域 参数:2分析器对象
QueryParser queryParser = new QueryParser("content", new IKAnalyzer());
//调用parse方法可以获得一个Query对象
//参数:要查询的内容,可以是一句话。先分词在查询
Query query = queryParser.parse("mybatis is a apache project");
printResult(getIndexSearcher(), query);
}
导入
lucene-queryparser包
上一篇: 大人每人一百,小孩子免费
下一篇: 夫妻之间冷战要如何和解?
推荐阅读