您的位置:首页 > 产品设计 > UI/UE

Lucene学习(一):入门

2017-03-27 10:05 459 查看

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"));
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  luence