【www.gdgbn.com--php入门】

为了便于调试,这里用Jsp程序作为例子:
要引入的包
<%@ page import = "org.apache.lucene.analysis.*" %>
<%@ page import = "org.apache.lucene.analysis.cn.smart.SmartChineseAnalyzer" %>
<%@ page import = "org.apache.lucene.document.*" %>
<%@ page import = "org.apache.lucene.index.*" %>
<%@ page import = "org.apache.lucene.store.*" %>
<%@ page import = "org.apache.lucene.util.*" %>

设定分词器
SmartChinese 是Lucene较新版本内置的强大分词器,当然你也可以使用第三方的,如 IKAnalyzer 等

Analyzer analyzer = new IKAnalyzer();
//Analyzer analyzer = new SmartChineseAnalyzer(Version.LUCENE_CURRENT);
Document doc = new Document();
Field f = null;

索引类
IndexWriter writer = new IndexWriter(FSDirectory.open( new File(request.getRealPath("网站的目录") ) ),
                                     analyzer, true, IndexWriter.MaxFieldLength.LIMITED);


for( 循环要索引的东东 )
{

    新文档(这里的文档,其实也可以认为相当于数据库的“行”,当然,如果索引的对象正好是个文件,那文档这种叫法就很合理了)
    doc = new Document();
   
    doc.add( new Field("id", rs.getString("id"), Field.Store.YES, Field.Index.NOT_ANALYZED) );

    doc.add( new Field("title", rs.getString("title"), Field.Store.YES, Field.Index.ANALYZED) );
   
    d = new SimpleDateFormat("yyyy-MM-dd").format( new java.util.Date( rs.getLong("shadow_time") ) ).toString();
    f = new Field("shadowtime", d, Field.Store.YES, Field.Index.NOT_ANALYZED);
    doc.add(f);
   
    writer.addDocument(doc);

}

索引必须严格按照这样的方式去创建,如果按2.4版以下的方式,会出现方法已经过期的警告,在3.0中一些方法甚至是直接不能用的,具体是哪些可以看相关的API。

本文来源:http://www.gdgbn.com/jiaocheng/23244/