lucene 4.x版本与5.x版本有什么区别
2016-08-24 · 知道合伙人软件行家
关注
展开全部
由于目前网上关于lucene的资料多是4.x或者更早版本的,5.x版本相比有较大的改动,为了方便学习5.x版本,本文对5.x的示例简单修改做个记录。
本文内容源自官方文档,在core/overview-summary.html上。
本文使用的具体版本是5.3.1,针对5.x版本都适用。
简单例子
Apache Lucene 是一个高性能并且功能全面的文本搜索引擎库,这里有一个如何使用Lucene进行索引和查询的简单例子。
public static void main(String[] args) throws IOException, ParseException {
Analyzer analyzer = new StandardAnalyzer();
//将索引存储到内存中
Directory directory = new RAMDirectory();
//如下想把索引存储到硬盘上,使用下面的代码代替
//Directory directory = FSDirectory.open(Paths.get("/tmp/testindex"));
IndexWriterConfig config = new IndexWriterConfig(analyzer);
IndexWriter iwriter = new IndexWriter(directory, config);
String[] texts = new String[]{
"Mybatis分页插件 - 示例",
"Mybatis 贴吧问答 第一期",
"Mybatis 示例之 复杂(complex)属性(property)",
"Mybatis极其(最)简(好)单(用)的一个分页插件",
"Mybatis 的Log4j日志输出问题 - 以及有关日志的所有问题",
"Mybatis 示例之 foreach (下)",
"Mybatis 示例之 foreach (上)",
"Mybatis 示例之 SelectKey",
"Mybatis 示例之 Association (2)",
"Mybatis 示例之 Association"
};
for (String text : texts) {
Document doc = new Document();
doc.add(new Field("fieldname", text, TextField.TYPE_STORED));
iwriter.addDocument(doc);
}
iwriter.close();
//读取索引并查询
DirectoryReader ireader = DirectoryReader.open(directory);
IndexSearcher isearcher = new IndexSearcher(ireader);
//解析一个简单的查询
QueryParser parser = new QueryParser("fieldname", analyzer);
Query query = parser.parse("foreach");
ScoreDoc[] hits = isearcher.search(query, null, 1000).scoreDocs;
//迭代输出结果
for (int i = 0; i < hits.length; i++) {
Document hitDoc = isearcher.doc(hits[i].doc);
System.out.println(hitDoc.get("fieldname"));
}
ireader.close();
directory.close();
}123456789101112131415161718192021222324252627282930313233343536373839404142434445
代码输出结果:
Mybatis 示例之 foreach (下)
Mybatis 示例之 foreach (上)
本文内容源自官方文档,在core/overview-summary.html上。
本文使用的具体版本是5.3.1,针对5.x版本都适用。
简单例子
Apache Lucene 是一个高性能并且功能全面的文本搜索引擎库,这里有一个如何使用Lucene进行索引和查询的简单例子。
public static void main(String[] args) throws IOException, ParseException {
Analyzer analyzer = new StandardAnalyzer();
//将索引存储到内存中
Directory directory = new RAMDirectory();
//如下想把索引存储到硬盘上,使用下面的代码代替
//Directory directory = FSDirectory.open(Paths.get("/tmp/testindex"));
IndexWriterConfig config = new IndexWriterConfig(analyzer);
IndexWriter iwriter = new IndexWriter(directory, config);
String[] texts = new String[]{
"Mybatis分页插件 - 示例",
"Mybatis 贴吧问答 第一期",
"Mybatis 示例之 复杂(complex)属性(property)",
"Mybatis极其(最)简(好)单(用)的一个分页插件",
"Mybatis 的Log4j日志输出问题 - 以及有关日志的所有问题",
"Mybatis 示例之 foreach (下)",
"Mybatis 示例之 foreach (上)",
"Mybatis 示例之 SelectKey",
"Mybatis 示例之 Association (2)",
"Mybatis 示例之 Association"
};
for (String text : texts) {
Document doc = new Document();
doc.add(new Field("fieldname", text, TextField.TYPE_STORED));
iwriter.addDocument(doc);
}
iwriter.close();
//读取索引并查询
DirectoryReader ireader = DirectoryReader.open(directory);
IndexSearcher isearcher = new IndexSearcher(ireader);
//解析一个简单的查询
QueryParser parser = new QueryParser("fieldname", analyzer);
Query query = parser.parse("foreach");
ScoreDoc[] hits = isearcher.search(query, null, 1000).scoreDocs;
//迭代输出结果
for (int i = 0; i < hits.length; i++) {
Document hitDoc = isearcher.doc(hits[i].doc);
System.out.println(hitDoc.get("fieldname"));
}
ireader.close();
directory.close();
}123456789101112131415161718192021222324252627282930313233343536373839404142434445
代码输出结果:
Mybatis 示例之 foreach (下)
Mybatis 示例之 foreach (上)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询