Lucene实践之SearchFile

上一篇学习了构建索引,这一篇来检索索引,同样是基础的用法。

准备工作

参考文档

1) http://lucene.apache.org/core/4_9_0/demo/src-html/org/apache/lucene/demo/SearchFiles.html

依赖jar包

  上篇Lucene实践之SearchFile中的jar包即可。

主要的类

  1) IndexReader , 读取索引文件

  2) IndexSearcher , 核心类执行检索

  3) QueryParser , 用于解析用户查询词

  4) Analyzer , 分词器,最好是与构建索引用一样的

牛刀小试

searchFile

 1 package lucene;
 2
 3 import java.io.File;
 4 import java.io.IOException;
 5
 6 import org.apache.lucene.analysis.Analyzer;
 7 import org.apache.lucene.analysis.standard.StandardAnalyzer;
 8 import org.apache.lucene.document.Document;
 9 import org.apache.lucene.index.DirectoryReader;
10 import org.apache.lucene.index.IndexReader;
11 import org.apache.lucene.queryparser.classic.ParseException;
12 import org.apache.lucene.queryparser.classic.QueryParser;
13 import org.apache.lucene.search.IndexSearcher;
14 import org.apache.lucene.search.Query;
15 import org.apache.lucene.search.ScoreDoc;
16 import org.apache.lucene.search.TopDocs;
17 import org.apache.lucene.store.FSDirectory;
18 import org.apache.lucene.util.Version;
19
20 public class Searcher {
21     public static IndexSearcher indexSearcher;
22     public static void search(String index,String queryStr) throws IOException, ParseException {
23         long start = System.currentTimeMillis();
24         IndexReader indexReader = DirectoryReader.open(FSDirectory.open(new File(index)));//读取索引
25         indexSearcher = new IndexSearcher(indexReader);
26         Analyzer anlyzer = new StandardAnalyzer(Version.LUCENE_46);//分词器
27         QueryParser parser = new QueryParser(Version.LUCENE_46, "content", anlyzer);//解析查询,"content"指定了查找的域(Field)
28         Query query = parser.parse(queryStr);
29         TopDocs results = indexSearcher.search(query, 10);//返回10条结果
30         ScoreDoc[] hits = results.scoreDocs;
31         int totalHits = results.totalHits;
32         for(int i = 0; i < totalHits; i++) {
33             Document doc = indexSearcher.doc(hits[i].doc);
34             System.out.println("["+doc.get("name")+"] " + doc.get("path"));
35             System.out.println();
36         }
37         long end = System.currentTimeMillis();
38         System.out.println("共找到"+totalHits+"条结果,耗时:"+(end-start)+"ms");
39     }
40     public static void main(String[] args) throws IOException, ParseException {
41         search("E:/data/index", "never");
42     }
43 }

结果显示

[nevergrowold.txt] E:\data\data2\nevergrowold.txt

共找到1条结果,耗时:143ms

Lucene实践之SearchFile

时间: 2024-08-28 03:55:23

Lucene实践之SearchFile的相关文章

Lucene实践之中文分词IKAalyzer

做检索怎么都绕不过中文分词去,学习一下用IKAnalyzer分词器做中文分词. Game Starts 参考文档 1) 中文分词之Java实现使用IK Analyzer实现 2) IKAnalyzer 独立使用 配置扩展词典 依赖jar包 1) IKAnalyzer2012FF_u1.jar 最好使用这个版本下面说 [百度网盘下载] 2) IKAnalyzer.cfg.xml [百度网盘下载] 3) keyWord.dic,stopWord.dic 字典 主要的类 1) IKAnalyzer ,

Lucene实践之Query

检索过程中可能会面临各种各样的复杂条件检索,今天学习一下lucene各种Query,并通过多个Query的合并使用实现多条件的检索. Game Starts 参考文档 1) Package org.apache.lucene.search Description 2) Lucene整理4-各种Query(转) 依赖的jar包 1)lucene-core.jar 2)lucene-analyzer-common 3)lucene-queryParser 主要的类 1)Term Term表示的就是一

聊聊基于Lucene的搜索引擎核心技术实践

最近公司用到了ES搜索引擎,由于ES是基于Lucene的企业搜索引擎,无意间在"聊聊架构"微信公众号里发现了这篇文章,分享给大家. 请点击链接:聊聊基于Lucene的搜索引擎核心技术实践

干货 |《从Lucene到Elasticsearch全文检索实战》拆解实践

1.题记 2018年3月初,萌生了一个想法:对Elasticsearch相关的技术书籍做拆解阅读,该想法源自非计算机领域红火已久的[樊登读书会].得到的每天听本书.XX拆书帮等. 目前市面上Elasticsearch的中文书籍就那么基本,针对ES5.X以上的三本左右:国外翻译有几本,都是针对ES1.X,2.X版本,其中<深入理解Elasticsearch>还算比较经典. 拆书的目的: 1)梳理已有的Elasticsearch知识体系: 2)拾遗拉在角落的Elasticsearch知识点: 3)

Nutch+Lucene搜索引擎开发实践

网络拓扑 图 1 网络拓扑图 安装Java JDK 首先查看系统是否已经安装了其他版本的JDK,如果有,先要把其他版本的JDK卸载. 用root用户登录系统. # rpm-qa|grep gcj 显示内容其中包含下面两行信息 # java-1.6.0-openjdk-1.6.0.0-1.57.1.11.9.el6_4.i686 #java-1.7.0-openjdk-1.7.0.9-2.3.8.0.el6_4.i686 卸载 #yum -y remove java-1.6.0-openjdk #

【Java】Lucene检索引擎详解

基于Java的全文索引/检索引擎——Lucene Lucene不是一个完整的全文索引应用,而是是一个用Java写的全文索引引擎工具包,它可以方便的嵌入到各种应用中实现针对应用的全文索引/检索功能. Lucene的作者:Lucene的贡献者Doug Cutting是一位资深全文索引/检索专家,曾经是V-Twin搜索引擎(Apple的Copland操作系统的成就之一)的主要开发者,后在Excite担任高级系统架构设计师,目前从事于一些INTERNET底层架构的研究.他贡献出的Lucene的目标是为各

Lucene 基础理论

1. 全文检索系统与Lucene简介 1.1 什么是全文检索与全文检索系统 全文检索是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式.这个过程类似于通过字典中的检索字表查字的过程. 全文检索的方法主要分为按字检索和按词检索两种.按字检索是指对于文章中的每一个字都建立索引,检索时将词分解为字的组合.对于各种不同的语言而言,字有不同的含义,比如英文中字与词实际上

一步一步跟我学习lucene(9)---lucene搜索之拼写检查和相似度查询提示(spellcheck)

suggest应用场景 用户的输入行为是不确定的,而我们在写程序的时候总是想让用户按照指定的内容或指定格式的内容进行搜索,这里就要进行人工干预用户输入的搜索条件了:我们在用百度谷歌等搜索引擎的时候经常会看到按键放下的时候直接会提示用户是否想搜索某些相关的内容,恰好lucene在开发的时候想到了这一点,lucene提供的suggest包正是用来解决上述问题的. suggest包联想词相关介绍 suggest包提供了lucene的自动补全或者拼写检查的支持: 拼写检查相关的类在org.apache.

构建高并发高可用的电商平台架构实践

从各个角度总结了电商平台中的架构实践,由于时间仓促,定了个初稿,待补充完善,欢迎大家一起交流. 转载请声明出处:http://blog.csdn.net/yangbutao/article/details/12242441 作者:杨步涛 关注分布式架构.大数据.搜索.开源技术 QQ:306591368 技术Blog:http://blog.csdn.net/yangbutao 一. 设计理念 1.      空间换时间 1)      多级缓存,静态化 客户端页面缓存(http header中包