在对很多文档进行索引之后,该怎样去快速定位到Documen的位置?
例如我要查找包含“上海”的文档,我该怎样快速定位包含“上海"的document的位置?
Lucene中document的id。
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答
- wlq199101 2017-05-24 06:38关注
public class ReaderByIndexerTest { public static void search(String indexDir,String q)throws Exception{ //得到读取索引文件的路径 Directory dir=FSDirectory.open(Paths.get(indexDir)); //通过dir得到的路径下的所有的文件 IndexReader reader=DirectoryReader.open(dir); //建立索引查询器 IndexSearcher is=new IndexSearcher(reader); //实例化分析器 Analyzer analyzer=new StandardAnalyzer(); //建立查询解析器 /** * 第一个参数是要查询的字段; * 第二个参数是分析器Analyzer * */ QueryParser parser=new QueryParser("title", analyzer); //根据传进来的p查找 Query query=parser.parse(q); //计算索引开始时间 long start=System.currentTimeMillis(); //开始查询 /** * 第一个参数是通过传过来的参数来查找得到的query; * 第二个参数是要出查询的行数 * */ TopDocs hits=is.search(query, 500); // TopDocs hits1= is.searchAfter(hits.scoreDocs[999], query, 1); //计算索引结束时间 long end=System.currentTimeMillis(); System.out.println("匹配 "+q+" ,总共花费"+(end-start)+"毫秒"+"查询到"+hits.totalHits+"个记录"); //遍历hits.scoreDocs,得到scoreDoc /** * ScoreDoc:得分文档,即得到文档 * scoreDocs:代表的是topDocs这个文档数组 * @throws Exception * */ for(ScoreDoc scoreDoc:hits.scoreDocs){ Document doc=is.doc(scoreDoc.doc); System.out.println("id="+doc.get("id")+"---->title="+doc.get("title")); } //关闭reader reader.close(); } //测试 public static void main(String[] args) { long start=System.currentTimeMillis(); String indexDir="d:\\luceneDemo"; String q="70533636-1448-4ed5-922f-ef33557d32ee"; try { search(indexDir,q); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } long end=System.currentTimeMillis(); System.out.println("总流程花费"+(end-start)+"毫秒"); }
匹配 70533636-1448-4ed5-922f-ef33557d32ee ,总共花费1051毫秒查询到3926个记录
id=10000000---->title=70533636-1448-4ed5-922f-ef33557d32ee
id=6050845---->title=973c3b75-4b35-4ed5-922f-af6b3e3d79c3
id=9464722---->title=af29187f-1448-4c97-a58f-08f7a70756c0
id=9088371---->title=1fdd7d52-1448-482d-9320-e66b263a55a5
id=9223590---->title=32a056b5-1448-4a94-91ea-3ef62654d6a1
id=9223659---->title=0f77f7a2-1448-4d70-a446-c6ca17df1adc
id=9260433---->title=ee1dc06c-1448-4ae8-acae-67b8434147c4
.............解决 无用评论 打赏 举报
悬赏问题
- ¥15 vc6.0中想运行代码的时候总是提示无法打开文件是怎么回事
- ¥25 关于##爬虫##的问题,如何解决?:
- ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
- ¥15 找一位技术过硬的游戏pj程序员
- ¥15 matlab生成电测深三层曲线模型代码
- ¥50 随机森林与房贷信用风险模型
- ¥50 buildozer打包kivy app失败
- ¥30 在vs2022里运行python代码
- ¥15 不同尺寸货物如何寻找合适的包装箱型谱
- ¥15 求解 yolo算法问题