要写毕业设计了,就拿Lucene做一个全文检索吧。
首先第一步创建索引。
import java.io.BufferedReader;
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.document.NumericField;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.util.Version;
public class SearchTest
{
public static void main(String[] args)
{
try
{
//指定源文件
BufferedReader reader = new BufferedReader(new FileReader(new File("D:/明朝那些事儿.txt" )));
String line = null;
//指定索引存放位置
Directory dir = FSDirectory.open(new File("D:/indexs/明朝那些事儿"));
//设置Writer的参数,最重要的两个,指定版本和分析器。
IndexWriterConfig writerConfig = new IndexWriterConfig(Version.LUCENE_35, new StandardAnalyzer(Version.LUCENE_35));
IndexWriter writer = new IndexWriter(dir, writerConfig);
int i = 1;
while(true)
{
line =reader.readLine();
if(line==null)
{
break;
}
//创建文档
Document doc = new Document();
//创建内容字段,设置为存储,使用分析器分析。
doc.add(new Field("content",line,Field.Store.YES,Field.Index.ANALYZED));
//添加一个特殊的字段 numericField 可以通过数字来指定范围
//如查询第1行到第5行
NumericField numField = new NumericField("nubmer");
doc.add(numField.setIntValue(i));
writer.addDocument(doc);
i++;
}
reader.close();
writer.close();
} catch (IOException e)
{
}
}
}
三角开始学习的是lucene3.0
3.5里创建IndexWriter的方法变了,是用IndexWriterConfig来设置参数
觉得这样简洁多了,用3.0时创建IndexWriter要指定4~6个参数,位置还不能放错,着实很头疼。
是用Luke 查询了下 嗯 效果不错。