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 代码 ...
随机推荐
- ionic开发ios app
注意必须是mac系统 1. 首先要安装node环境,Ionic的安装和后续的许多前端工具的安装都依赖于node的包管理器npm. nodeJs环境的安装很简单,去官网下载最新版的NodeJs直接安装即 ...
- uva 11038 - How Many O's?
想法: 將問題簡化為求1~m 0的總數,以及1~n 0的總數,然後最後再相減. 求1~n 0的總數,要將n分別算每個位數0的個數,舉例如30324: 先從右邊第一位'4'開始,其左邊為3032,表示1 ...
- include,include_once,require,require_once的区别
1.include,require在其被调用的位置处包含一个文件. 2.include_once,require_once函数的作用与include相同,不过它会首先验证是否已包含该文件.如果已经包含 ...
- js判断是否微信浏览器打开
function is_weixn(){ var ua = navigator.userAgent.toLowerCase(); if(ua.match(/MicroMessenger/i)==&qu ...
- javascript版QQ在线聊天挂件
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Python新手学习基础之运算符——成员运算与身份运算
成员运算符 Python里有成员运算符,可以判断一个元素是否在某一个序列中.比如可以判断一个字符是否属于这个字符串,可以判断某个对象是否在这个列表中等等. Python中的成员操作符的使用语法是: o ...
- C 小写字母编程大写并输出
main(){ FILE *fp; char str[100],filename[10]; int i=0;if((fp=fopen("test","w"))= ...
- 后台管理UI
后台管理UI 目录 一.EasyUI 二.DWZ JUI 三.HUI 四.BUI 五.Ace Admin 六.Metronic 七.H+ UI 八.Admin LTE 九.INSPINIA 十.Lig ...
- 安装Hadoop集群的最快的软件
Quick Hadoop是一款安装Hadoop集群的桌面软件,只需要点两下鼠标,一分钟之内安装Hadoop到集群上,超快! 还在每台主机的Shell里一行一行地敲安装Hadoop的命令?别苦逼了! 用 ...
- Linux方面收藏的一点儿资料
初来乍到,也算是第一次写技术类相关的博客,就分享几篇收藏的Linux相关的资料吧,希望可以给需要的人一点帮助. 1.<高级Bash脚本编程指南>:该网站详细讲解了Bash Shell编程的 ...