191145685 发表于 2017-1-14 12:26:13

使用org.apache.lucene创建和查询索引核心代码详解

  首先,我们应该在硬盘或者内存中创建我们表中需要建立索引的字段,创建的核心类使用IndexWriter
  IndexWriter(File path, Analyzer a, boolean create)
IndexWriter(String path, Analyzer a, boolean create)
构造参数:一个索引文件目录,一个分析器(一般用标准的这个),最后一个参数是标识是否清空索引目录
  a.索引格式:其实索引目录有两种格式,一种是除配置文件外,每一个Document独立成为一个文件(这种搜索起来会影响速度)。另一种是全部的Document成一个文件,这样属于复合模式就快了。
b.索引文件可放的位置:索引可以存放在两个地方1.硬盘,2.内存;

  放在硬盘上可以用FSDirectory(),放在内存的用RAMDirectory()不过一关机就没了
  使用硬盘作为索引创建目录:

  FSDirectory.getDirectory(File file, boolean create)
FSDirectory.getDirectory(String path, boolean create)两个工厂方法返回目录

  //待创建的文档目录

  FSDirectory.open(new File(INDEX_STORe_PATH));


  使用内存作为目录:
  New RAMDirectory()就直接可以再和IndexWriter(Directory d, Analyzer a, boolean create)一配合就行了如:
  创建IndexWriter对象:
  硬盘:IndexWrtier writer = new IndexWriter(FSDirectory.getDirectory(“c:\\index”,true),new StandardAnlyazer(),true);

  内存:IndexWrtier writer = new IndexWriter(new RAMDirectory(),new StandardAnlyazer(),true);
  new StandardAnalyzer(Version.LUCENE_34);//表示选择分词工具


  我们还可以给IndexWriter设置相关属性:
   writer.setUseCompoundFile(true); //设置
writer.setMaxBufferedDocs(100);//设置缓存
writer.setMergeFactor(10);
  创建Document索引目录:
  Document doc =new Document();
  //给字段添加索引(属性名,属性名所对应的值,标志该数据源(字段)被存储,标志该数据源(字段)被索引)

  doc.add(new Field("name","工作日志",Field.Store.YES,Field.Index.TOKENIZED));

  将Document添加到IndexWriter中:
  writer.addDocument(doc);
  writer.commit();
  writer.close();

  

  查询索引:
  查询索引首先要指定位置:
  IndexSearcher indexSearcher =new IndexSearcher("c:\\indexDisk");
  创建查询解析器
  QueryParser queryParser = new QueryParser("name",newStandardAnalyzer());

  Query query = queryParser.parse("工作");

  

  执行查询返回Hits类,对查询结果进行操作:
  

[*] Hits hits = indexSearcher.search(query);
[*] System.out.println("找到了"+hits.length()+"结果");
[*]for(int i=0;i<hits.length;i++)
[*] {
[*] Document doc = hits.doc(i);
[*] System.out.println(doc.get("name"));
[*] }

全文检索的基本原理:http://forfuture1978.iteye.com/blog/546771
Lucene的学习总结:http://forfuture1978.iteye.com/category/89151
Lucene3.5--建索引相关知识总结:http://www.cnblogs.com/qingfeideyi/archive/2012/03/04/2379526.html

  

  
页: [1]
查看完整版本: 使用org.apache.lucene创建和查询索引核心代码详解