您的位置:首页 > 其它

lucene5.5.1入门

2016-05-22 00:00 357 查看
摘要: lucene5.5.1入门例子,需要jar:lucene-analyzers-common-5.5.1.jar,lucene-core-5.5.1.jar,lucene-queries-5.5.1.jar,lucene-queryparser-5.5.1.jar,下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache/lucene/java/5.5.1/

[code=language-java]package com.lucene;

import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.TextField;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.queryparser.classic.ParseException;
import org.apache.lucene.queryparser.classic.QueryParser;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.RAMDirectory;
import java.io.IOException;

/**
* Created by liujh on 16/5/22.
*/

public class TestLucene {
static Analyzer analyzer = new StandardAnalyzer();
static Directory directory = new RAMDirectory();
//Directory directory = FSDirectory.open(new File("/youfilepath"));

public static void main(String[] args) throws IOException, ParseException {
createIndex();
queryIndex();
}

public static void createIndex() throws IOException {
IndexWriterConfig config = new IndexWriterConfig(analyzer);
IndexWriter iwriter = new IndexWriter(directory, config);
Document doc = new Document();
String text = "my name is liujinhu";
doc.add(new Field("name", text, TextField.TYPE_STORED));
iwriter.addDocument(doc);
iwriter.close();
System.out.println("建立索引 ok");
}

public static void queryIndex() throws IOException, ParseException {
DirectoryReader ireader = DirectoryReader.open(directory);
IndexSearcher isearcher = new IndexSearcher(ireader);
QueryParser parser = new QueryParser("name", analyzer);
//ireader.document(ireader.maxDoc()-1).get("name")  获取name索引的所有内容
System.out.println("name:"+ireader.document(ireader.maxDoc()-1).get("name"));
Query query = parser.parse("liujinhu");//查询name是否含有liujinhu词
ScoreDoc[] hits = isearcher.search(query, 1000).scoreDocs;
System.out.println(hits.length == 1);
for (int i = 0; i < hits.length; i++) {
Document hitDoc = isearcher.doc(hits[i].doc);
System.out.println(hitDoc.get("name"));
}
ireader.close();
//directory.close(); directory关闭了,queryIndex()连续调用两次,将报错
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息