Lucene入门与使用(2)转
2008-04-17 21:42
405 查看
Lucene入门与使用(2)
2008-04-07 17:35
2008-04-07 17:35
5. 利用Lucene进行检索 5.1 一段简单的检索代码 //需要捕捉IOException,ParseException异常 //处理检索条件 Query query = QueryParser.parse("入门", "text", analyzer); //检索 Searcher searcher = new IndexSearcher("./index");//"index"指定索引文件位置 Hits hits = searcher.search(query); //打印结果值集 for (int i = 0; i < hits.length(); i++) { doc = hits.doc(i); String id = doc.get("id"); System.out.println("found " + "入门" + " on the id:" + id); } 5.2 利用Lucene的检索接口 5.2.1 Query与QueryParser 主要使用方法: QueryParser .parse(String query, String field, Analyzer analyzer),例如: Query query = QueryParser.parse("入门", "text", analyzer); "入门"为检索词, "text"为检索的字段名, analyzer为分析器 5.2.2 Hits与Searcher Hits的主要使用接口:
6.1 Lucene 的索引修改 下面给出一段修改索引的代码,请根据Lucene的API解读: /** * 对已有的索引添加新的一条索引 * @param idStr String:要修改的id * @param doc Document:要修改的值 */ public void addIndex(String idStr, String valueStr) { StandardAnalyzer analyzer = new StandardAnalyzer(); IndexWriter writer = null; try { writer = new IndexWriter(indexPath, analyzer, false); writer.mergeFactor = 2; //修正lucene 1.4.2 bug,否则不能准确反映修改 Document doc = new Document(); doc.add(Field.UnIndexed("id", idStr));//“id”为字段名,“1”为字段值 doc.add(Field.Text("text", valueStr)); writer.addDocument(doc); writer.optimize(); writer.close(); } catch (IOException ioe) { ioe.printStackTrace(); } } /** * 删除索引 * * @param idStr String */ public void deleteIndex(String idStr) { try { Directory dirt = FSDirectory.getDirectory(indexPath, false); IndexReader reader = IndexReader.open(dirt); IndexXML.deleteIndex(idStr, reader); reader.close(); dirt.close(); } catch (IOException ioe) { ioe.printStackTrace(); } } 6.2 Lucene 的检索结果排序 Lucene的排序主要是对org.apache.lucene.search.Sort的使用。Sort可以直接根据字段Field生成,也可以根据标 准的SortField生成,但是作为Sort的字段,必须符合以下的条件:唯一值以及Indexed。可以对Integers, Floats, Strings三种类型排序。 对整数型的ID检索结果排序只要进行以下的简单操作: Sort sort = new Sort("id"); Hits hits = searcher.search(query, sort); 用户还可以根据自己定义更加复杂的排序,详细请参考API。 7 总结 Lucene给java的全文索引检索带来了非常强大的力量,以上仅对Lucene进行简单的入门说明。 参考资料: 1. Overview (Lucene 1.4-final API) 2. 车东 《在应用中加入全文检索功能--基于JAVA的全文索引引擎Lucene简介》 |
相关文章推荐
- Lucene入门与使用
- Lucene入门与使用
- 李克华 云计算高级群: 292870151 195907286 交流:Hadoop、NoSQL、分布式、lucene、solr、nutch kafka入门:简介、使用场景、设计原理、主要配置及集群搭
- Lucene入门与使用(1)--转
- lucene入门-使用pdfbox解析中文PDF
- lucene入门-解析pdf(使用xpdf解析中文PDF详细过程)
- lucene入门-解析pdf(使用pdfbox解析英文PDF)
- Lucene.NET使用入门(二)【简单的搜索网站示例】
- lucene入门-使用JE中文分词
- JAVAWEB开发之Lucene详解——Lucene入门及使用场景、全文检索、索引CRUD、优化索引库、分词器、高亮、相关度排序、各种查询
- Lucene入门使用
- Apache Lucene 5.1.0 入门使用篇
- Lucene入门和使用
- :Hadoop、NoSQL、分布式、lucene、solr、nutch kafka入门:简介、使用场景、设计原理、主要配置及集群搭
- 开发自己的搜索引擎——Lucene 2.0+Heriterx—— Heritrix的使用入门
- Lucene入门与使用
- 李克华 云计算高级群: 292870151 195907286 交流:Hadoop、NoSQL、分布式、lucene、solr、nutch kafka入门:简介、使用场景、设计原理、主要配置及集群搭
- lucene入门与使用
- lucene入门-使用JE中文分词
- Lucene入门与使用