//查询索引
@Test
public void searchIndex() throws Exception{
//1.创建一个Director对象
Directory directory = FSDirectory.open(new File("E:\\Java_Study\\Lucene\\index").toPath());
//2.创建一个IndexReader对象
IndexReader indexReader = DirectoryReader.open(directory);
//3.创建一个IndexSearcher对象,构造方法中的参数indexReader对象
IndexSearcher indexSearcher = new IndexSearcher(indexReader);
//4.创建Query对象,TermQuery
Query query = new TermQuery(new Term("name","spring"));
//5.执行查询,得到一个TopDocs对象
//参数1:查询对象 参数2:查询结果返回的最大记录数
TopDocs topDocs = indexSearcher.search(query, 10);
//6取查询结果的总记录数
System.out.println("查询的总记录数:"+topDocs.totalHits);
//7.获取文档列表
ScoreDoc[] scoreDocs = topDocs.scoreDocs;
//8.打印文档中的内容
for(ScoreDoc doc : scoreDocs){
//取文档id
int docId = doc.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
indexReader.close();
}
//数值范围之间的查询
@Test
public void testRangeQuery() throws Exception{
//1.创建一个Director对象
Directory directory = FSDirectory.open(new File("E:\\Java_Study\\Lucene\\index").toPath());
//2.创建一个IndexReader对象
IndexReader indexReader = DirectoryReader.open(directory);
//3.创建一个IndexSearcher对象,构造方法中的参数indexReader对象
IndexSearcher indexSearcher = new IndexSearcher(indexReader);
//创建一个Query对象
Query query = LongPoint.newRangeQuery("size", 0l, 100l);
TopDocs topDocs = indexSearcher.search(query, 10);
System.out.println("总记录数:"+topDocs.totalHits);
//7.获取文档列表
ScoreDoc[] scoreDocs = topDocs.scoreDocs;
//8.打印文档中的内容
for(ScoreDoc doc : scoreDocs){
//取文档id
int docId = doc.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"));
}
}
//根据一句话进行查询
@Test
public void testQueryParser() throws Exception{
//1.创建一个Director对象
Directory directory = FSDirectory.open(new File("E:\\Java_Study\\Lucene\\index").toPath());
//2.创建一个IndexReader对象
IndexReader indexReader = DirectoryReader.open(directory);
//3.创建一个IndexSearcher对象,构造方法中的参数indexReader对象
IndexSearcher indexSearcher = new IndexSearcher(indexReader);
//4.创建一个QueryParser对象
//参数1:默认搜索域 参数2:分析器对象
IKAnalyzer analyzer = new IKAnalyzer();
QueryParser queryParser = new QueryParser("name",analyzer);
//5.使用QueryParser对象创建一个Query对象
Query query = queryParser.parse("lucene是一个Java开发的全文检索开发工具包");
//6.执行查询
TopDocs topDocs = indexSearcher.search(query, 10);
System.out.println("总记录数:"+topDocs.totalHits);
//7.获取文档列表
ScoreDoc[] scoreDocs = topDocs.scoreDocs;
//8.打印文档中的内容
for(ScoreDoc doc : scoreDocs){
//取文档id
int docId = doc.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"));
}
}
来源:CSDN
作者:LEEWLD
链接:https://blog.csdn.net/wait_13/article/details/104215979