lucene的索引查询
2024-10-16 07:25:14
package com.hope.lucene;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.LongPoint;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.queryparser.classic.QueryParser;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.store.FSDirectory;
import org.junit.Before;
import org.junit.Test;
import org.wltea.analyzer.lucene.IKAnalyzer;
import java.io.File;
/**
* @author newcityman
* @date 2020/1/15 - 18:14
*/
public class SearchIndex {
private IndexReader indexReader;
private IndexSearcher indexSearcher;
@Before
public void init() throws Exception{
indexReader = DirectoryReader.open(FSDirectory.open(new File("G:\\workspace_idea3\\lucene\\temp\\index").toPath()));
indexSearcher = new IndexSearcher(indexReader);
}
/**
* 范围查询
* @throws Exception
*/
@Test
public void testRangeQuery() throws Exception{
//创建一个Query对象
Query query = LongPoint.newRangeQuery("size", 0L, 50L);
printResult(query);
}
public void printResult(Query query) throws Exception{
TopDocs topDocs = indexSearcher.search(query, 10);
System.out.println("总记录数:"+topDocs.totalHits);
ScoreDoc[] scoreDocs = topDocs.scoreDocs;
for(ScoreDoc scoreDoc : scoreDocs) {
//取文档id
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("size"));
// System.out.println(document.get("content"));
System.out.println("++++++++++++++++++++++++++++++");
}
indexReader.close();
}
/**
* 使用QueryParser查询
* @throws Exception
*/
@Test
public void testQueryParser() throws Exception{
//创建一个QueryParser对象,两个参数
//参数一:默认搜索域, 参数2:分析器对象
QueryParser queryParser = new QueryParser("name",new IKAnalyzer());
//使用QueryParser对象创建一个Query对象
Query query = queryParser.parse("全文");
// 执行查询
printResult(query);
}
}
最新文章
- android nfc中Ndef格式的读写
- [转] 将DOS格式文本文件转换成UNIX格式
- 不安装Oracle客户端情况下使用PL/SQL 远程连接数据库
- android bundle存放数据详解
- Java7并发编程实战(一) 线程的中断
- Azkaban 2.5.0 job type 插件安装
- POJ 2184 01背包+负数处理
- 清理PC垃圾
- [转] acmer必看的26个对acm态度
- 用HiveDB横向切分MySQL数据库
- Swift - 36 - 结尾闭包(Trailing closure)和捕获数值(Capturing Values)的简单介绍
- JavaScript数组去重方法汇总
- 雨后清风教你如何在Windows 7中对硬盘进行分区
- gitlab 误关闭sign-in
- sql server 性能调优之 资源等待SOS_SCHEDULER_YIELD
- web层直接调用 dubbo的服务,合适吗?
- Json的序列化与反序列化以及乱入的k_BackingField
- Openssl源代码整理学习---含P7/P10/P12说明
- [原]Jenkins(一)---我理解的jenkins是这样的(附全套PDF下载)
- JavaScript学习 - 基础(八) - DOM 节点 添加/删除/修改/属性值操作