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);
}
}

最新文章

  1. android nfc中Ndef格式的读写
  2. [转] 将DOS格式文本文件转换成UNIX格式
  3. 不安装Oracle客户端情况下使用PL/SQL 远程连接数据库
  4. android bundle存放数据详解
  5. Java7并发编程实战(一) 线程的中断
  6. Azkaban 2.5.0 job type 插件安装
  7. POJ 2184 01背包+负数处理
  8. 清理PC垃圾
  9. [转] acmer必看的26个对acm态度
  10. 用HiveDB横向切分MySQL数据库
  11. Swift - 36 - 结尾闭包(Trailing closure)和捕获数值(Capturing Values)的简单介绍
  12. JavaScript数组去重方法汇总
  13. 雨后清风教你如何在Windows 7中对硬盘进行分区
  14. gitlab 误关闭sign-in
  15. sql server 性能调优之 资源等待SOS_SCHEDULER_YIELD
  16. web层直接调用 dubbo的服务,合适吗?
  17. Json的序列化与反序列化以及乱入的k_BackingField
  18. Openssl源代码整理学习---含P7/P10/P12说明
  19. [原]Jenkins(一)---我理解的jenkins是这样的(附全套PDF下载)
  20. JavaScript学习 - 基础(八) - DOM 节点 添加/删除/修改/属性值操作

热门文章

  1. Mac卸载go
  2. linux查看和修改时间
  3. C 语言基础,来喽!
  4. 菜鸡的Java笔记 第五 - java 程序逻辑控制
  5. 基于Guava API实现异步通知和事件回调
  6. [cf10E]Greedy Change
  7. Taro 3.4 beta 发布: 支持 Preact 为应用开辟更多体积空间
  8. @Value设置默认值
  9. C#中的异步
  10. VSCode + PicGo + Github + jsDelivr 搭建稳定快速高效图床