要写毕业设计了,就拿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 查询了下 嗯 效果不错。