luence的pom文件<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-core</artifactId>
<version>5.3.1</version>
</dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-queryparser</artifactId>
<version>5.3.1</version>
</dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-analyzers-common</artifactId>
<version>5.3.1</version>
</dependency>
luence建立索引
private IndexWriter indexWriter;
/**
* 简历索引
* @param dataDir 要检索的文件的地址
* @param indexDir 索引的存放地址
* @throws IOException
*/
public int doIndex(String dataDir, String indexDir) throws IOException {
//目录
Directory dir = FSDirectory.open(Paths.get(indexDir));
//分词器
Analyzer analyzer = new StandardAnalyzer();
//配置
IndexWriterConfig iwc = new IndexWriterConfig(analyzer);
//生成writer
indexWriter = new IndexWriter(dir, iwc);
File[] files = new File(dataDir).listFiles();
for(File f : files) {
Document d = new Document();
d.add(new TextField("contents",new FileReader(f)));
d.add(new TextField("fileName", f.getName(),Field.Store.YES));
d.add(new TextField("fullPath",f.getCanonicalPath(),Field.Store.YES));
indexWriter.addDocument(d);
}
return indexWriter.numDocs();
}
/**
* 关闭索引
* @throws IOException
*/
public void closeWriter() throws IOException {
indexWriter.close();
}
luence搜索
/**
*
* @param indexDir 索引文件路径
* @param q 要查询的东西
* @throws IOException
* @throws ParseException
*/
public void search(String indexDir, String q) throws IOException, ParseException {
//构建IndexReader
Directory dir = FSDirectory.open(Paths.get(indexDir));
IndexReader r = DirectoryReader.open(dir );
//构建query
Analyzer analyzer = new StandardAnalyzer();
QueryParser parser=new QueryParser("fileName",analyzer);
Query query = parser.parse(q);
//构建IndexSearcher
IndexSearcher is = new IndexSearcher(r);
//查询
TopDocs hits = is.search(query , 10);
//遍历结果
System.out.println(hits.totalHits);
for(ScoreDoc d : hits.scoreDocs) {
Document doc = is.doc(d.doc);
System.out.println(doc.get("fullPath"));
}
}