Lucene 搜索(小程序)(Lucene3.5)
来源:互联网 发布:淘宝管控记录会扣分吗 编辑:程序博客网 时间:2024/06/05 06:27
/*今天看了个搜索的小程序 总结如下
Lucene 执行搜索的步骤:
1...创建Derectory
2...创建IndexReader
3...根据IndexReader创建IndexSearcher
4...创建搜索的Query(查询字符串)
5...根据searcher搜索并且返回TopDocs对象
6...根据TopDocs获取ScoreDoc对象
7....根据searcher和ScoreDoc对象获取具体的Document对象
8...根据Document对象获取需要的值
9...关闭reader
*/
import java.io.File;import java.io.FileReader;import java.io.IOException;import org.apache.lucene.analysis.standard.StandardAnalyzer;import org.apache.lucene.document.Document;import org.apache.lucene.document.Field;import org.apache.lucene.index.CorruptIndexException;import org.apache.lucene.index.IndexReader;import org.apache.lucene.index.IndexWriter;import org.apache.lucene.index.IndexWriterConfig;import org.apache.lucene.queryParser.ParseException;import org.apache.lucene.queryParser.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 org.apache.lucene.store.IndexInput;import org.apache.lucene.store.IndexOutput;import org.apache.lucene.store.LockObtainFailedException;import org.apache.lucene.store.RAMDirectory;import org.apache.lucene.util.Version;public class HelloLucene {/** * @param args */public static void index()//throws IOException{IndexWriter writer=null;try {//Directory directory=new RAMDirectory() ;//创建在内存中//1.创建DirectoryDirectory directory=FSDirectory.open(new File("g:/lucene/first1") );//创建在硬盘中//2.创建IndexWriter IndexWriterConfig iwc=new IndexWriterConfig(Version.LUCENE_35, new StandardAnalyzer(Version.LUCENE_35));writer=new IndexWriter(directory,iwc);//3.创建Document对象Document doc=null;//4.为Document添加FieldFile f=new File("g:/lucene/testFiles");for (File file:f.listFiles()){doc=new Document();doc.add(new Field("content",new FileReader(file)));doc.add(new Field("filename",file.getName(),Field.Store.YES,Field.Index.NOT_ANALYZED));doc.add(new Field("filepath",file.getAbsolutePath(), Field.Store.YES, Field.Index.NOT_ANALYZED));//通过IndexWriter添加文档到索引中writer.addDocument(doc);System.out.println(file.getName()+" has Indexed!");}} catch (CorruptIndexException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (LockObtainFailedException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{try {writer.close();//关闭indextwriter} catch (CorruptIndexException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}public static void searcher(){try {//1.Directory directory = FSDirectory.open(new File("g:/lucene/first1") );//2.IndexReader reader=IndexReader.open(directory); //3.IndexSearcher searcher=new IndexSearcher(reader);//4.QueryParser parser=new QueryParser(Version.LUCENE_35,"content",new StandardAnalyzer(Version.LUCENE_35));Query query=parser.parse("java");//5.TopDocs tds=searcher.search(query, 20);//6.ScoreDoc [] sds=tds.scoreDocs;for (ScoreDoc sd:sds){//7.Document d=searcher.doc(sd.doc);//8.System.out.println(d.get("filename")+"["+d.get("filepath")+"]");}//9.reader.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (ParseException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public static void main(String[] args) {// TODO Auto-generated method stubindex();searcher();}}
*/
//不足 感觉自己看的太慢 得抓紧了
- Lucene 搜索(小程序)(Lucene3.5)
- Lucene小练十二(分页搜索)
- 搜索技术--建立索引(lucene3.0)
- Practice Every Day_7(Lucene3.5小练习)
- Lucene中索引的删除,更新与查找以及恢复(lucene3.5)
- LUCENE第一个小程序(有错)
- lucene3.5程序
- 【搜索那些事】细谈lucene(二)lucene搜索程序组件详解
- 【搜索那些事】细谈lucene(二)lucene搜索程序组件详解
- 【搜索那些事】细谈lucene(二)lucene搜索程序组件详解
- Lucene(四)搜索
- Lucene七(搜索)
- Lucene(2)搜索
- Lucene(二)搜索
- lucene搜索小例子
- Lucene之——第一个Lucene3.0程序
- lucene搜索程序组件
- Lucene小练11(QueryPraser搜索--基本能实现各种搜索)
- Android设置全屏两种方式
- 什么是量化表(Quantization Tables )
- java项目开发实践经验之二:几种常见数据库连接池的使用比较
- 网页编辑器中的换行Enter跨行问题解决方案
- session.flush()与session.clear()的区别及使用环境
- Lucene 搜索(小程序)(Lucene3.5)
- java 集合
- Map的遍历方法
- 没有深夜痛哭过的人,不足以谈人生
- uboot第一阶段详细分析
- Nginx 使用 Linux-native aio 提高文件读取性能
- 116 - Unidirectional TSP
- spring 配置jdbc/hibernate/jpa
- Response.Redirect 打开新窗口的两种方法