2 读取solr下的索引文件(lucene文件)
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexableField;
import org.apache.lucene.queryparser.classic.ParseException;
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.Directory;
import org.apache.lucene.store.FSDirectory; import java.io.IOException;
import java.nio.file.Paths;
import java.util.List; /**
* 直接读取lucene文件内容
*/
public class ReadLuceneFileTest { public static void main(String[] args) {
test1();
} public static void test1(){
//得到读取索引文件的路径
Directory dir= null;
try {
dir = FSDirectory.open(Paths.get("F:\\index"));
} catch (IOException e) {
System.out.println("IOException of open file,异常信息:"+e.getMessage());
e.printStackTrace();
} //通过dir得到的路径下的所有的文件
IndexReader reader= null;
try {
reader = DirectoryReader.open(dir);
} catch (IOException e) {
System.out.println("发生获取文件目录内容异常,异常信息:"+e.getMessage());
e.printStackTrace();
} //公共是多少文件,也就是最大文档数
System.out.println("最大文档数:"+reader.maxDoc()); //读取的实际文档数
System.out.println("实际文档数:"+reader.numDocs());
//建立索引查询器
IndexSearcher is=new IndexSearcher(reader);
//实例化分析器
Analyzer analyzer=new StandardAnalyzer();
//建立查询解析器
/**
* 第一个参数是要查询的字段;
* 第二个参数是分析器Analyzer
* */
QueryParser parser=new QueryParser("DOC_ID", analyzer); //根据传进来的p查找
Query query= null;
try {
query = parser.parse("*:*");
} catch (ParseException e) {
System.out.println("解析异常,异常信息:"+e.getMessage());
e.printStackTrace();
}
//计算索引开始时间
long start=System.currentTimeMillis();
//开始查询
/**
* 第一个参数是通过传过来的参数来查找得到的query;
* 第二个参数是要出查询的行数
* */
TopDocs hits= null;
try {
hits = is.search(query, 5);
} catch (IOException e) {
System.out.println("搜索异常,异常信息:"+e.getMessage());
e.printStackTrace();
}
//计算索引结束时间
long end=System.currentTimeMillis(); System.out.println("匹配 "+"DOC_ID"+" ,总共花费"+(end-start)+"毫秒"+"查询到"+hits.totalHits+"个记录"); //遍历hits.scoreDocs,得到scoreDoc
/**
* ScoreDoc:得分文档,即得到文档
* scoreDocs:代表的是topDocs这个文档数组
* @throws Exception
* */
for(ScoreDoc scoreDoc:hits.scoreDocs){
Document doc= null;
try {
doc = is.doc(scoreDoc.doc);
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(doc);
List<IndexableField> list= doc.getFields();
for (IndexableField indexableField : list) {
System.out.println(indexableField.name()+" : "+doc.get(indexableField.name()));
}
System.out.println("****************");
}
//关闭reader
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
} }
2 读取solr下的索引文件(lucene文件)的更多相关文章
- Python--通过索引excel表将文件进行文件夹分类的脚本+读取指定目录下所有文件名的脚本
1.通过索引excel表将文件进行文件夹分类的脚本,此脚本由于将ip和id对应并生成对应id的文件夹将文件进行分类,也可以任意规定表格内容,通过vul_sc_ip.txt和xlsx文件进行索引. # ...
- lucene写索引出现锁文件的原因之一
lucene正常情况目录下的文件 有三个文件. segments.gen segments_a08, 还有一个类似 _uw.cfs名字的东西. 当然,不一定都一样, 但肯定是这三个. 如果出现了很多文 ...
- 【转】忙里偷闲写的小例子---读取android根目录下的文件或文件夹
原文网址:http://www.cnblogs.com/wenjiang/p/3140055.html 最近几天真的是各种意义上的忙,忙着考试,还要忙着课程设计,手上又有外包的项目,另一边学校的项目还 ...
- 【转】读取android根目录下的文件或文件夹
原文网址:http://my.oschina.net/Ccx371161810/blog/287823 读取android根目录下的文件或文件夹 SDK的操作 读取android根目录下的文件或文件夹 ...
- Android 读取手机SD卡根目录下某个txt文件的文件内容
1.先看activity_main.xml文件: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/and ...
- Maven项目读取resources下文件的路径问题(getClassLoader的作用)
读取resources下文件的方法 网上有问答如下:问: new FileInputStream("src/main/resources/all.properties") new ...
- 忙里偷闲写的小例子---读取android根目录下的文件或文件夹
最近几天真的是各种意义上的忙,忙着考试,还要忙着课程设计,手上又有外包的项目,另一边学校的项目还要搞,自己的东西还在文档阶段,真的是让人想死啊!! 近半个月来,C#这方面的编码比较多,android和 ...
- 解决:java 读取 resources 下面的 json 文件
前言:java 读取 工程下的配置文件,文件类型为 json(*.json),记录一下始终读取不到 json 文件的坑.maven项目 直接上工具类代码 package com.yule.compon ...
- 使用ResourceBundle 类读取 src 下的 xxx.properties 文件
之前要读取 src 下的 .properties 文件都是使用的类加载器,加载类路径下的资源文件当做一个流来处理,load 到一个 Properties 对象上. jdbc.properties 代码 ...
随机推荐
- 矩阵链乘 hrbust 1600
#include<string.h> //区间dp的思想#include<iostream> //将一个区间分成两段,将每一段当成是一个矩阵#include<stdio. ...
- web标准(复习)--5 超链接伪类
今天我们开始学习超链接伪类,包含以下内容和知识点: 链接的四种样式 将链接转换为块状 用css制作按钮 首字下沉 一.超链接的四种样式 超链接可以说是网页发展史上一个伟大的发明,它使得许多页面相互链接 ...
- 窗口!窗口!- Windows程序设计(SDK)003
窗口!窗口! 让编程改变世界 Change the world by program 内容节选: 在前边两节课的例子中,我们通过 MessageBox 函数创建一个消息框程序,消息框其实就是用来跟用户 ...
- ADT-位图
利用位图数据结构实现排序,利用每一位的下标作为索引,每位的值作为属性值,可以表示存在或不存在,适合存储稠密的数据,排序遍历的范围会是索引的最大值 最后发现耗时比python中list自带的sort多, ...
- .NET知识点总结一(笔记整合)
1. .net framework原理简介,C#程序的两次编译 .NET源代码——>语言编译器(第一次编译)——>MSIL+元数据(exe文件)——>CLR(公共语言运行时——类 ...
- cf B. Fence
http://codeforces.com/contest/363/problem/B #include <cstdio> #include <cstring> #includ ...
- bzoj4003
http://www.lydsy.com/JudgeOnline/problem.php?id=4003 可合并堆. 每个点都有一个小根堆,记住可以到这个点的骑士有哪些,以战斗力为关键字. 从底层到顶 ...
- requirejs-define jquery 快速初学实例(一)
原文地址:http://6yang.net/articles_view.php?id=1103 2011-10-18 13:12:01 by [6yang], 1029 visits, 收藏 | 返回 ...
- requireJS define require
原文地址:http://blog.csdn.net/xiaogou56a/article/details/21340213 define 用来定义模块 require 用来加载模块 1 因为定义一个模 ...
- Exchange Server 2010/2013功能差异