Lucene基础篇1 概论
来源:互联网 发布:网络高清机顶盒哪个好 编辑:程序博客网 时间:2024/05/29 04:40
在学lucene 之初看了许多书,都是走马观花,没有项目的驱动下,来一个用例demo感觉也不是很难,“我会了”这是我的第一感觉。
在2013年底公司接到一个项目用到lucene,这是我第一次正真接触Lucene,代码比较老3.6版本,不适合新项目的需求(空间查询)。于是下载了最新版本 4.51,有带“空间查询”模块。各大搜索引擎都没有找到像样例子,于是想到了lucene svn的trunk目录测试用例中找到了测试例子,开始了一段lucene之旅。
写数据,创建IndexWriter,通过它的构造函数需要一个索引目录(Diectory)和索引写入配置项(InderWriterConfig),直接上代码:
//设置写入目录(好几种呵呵)
Directoryd=FSDirectory.open(new File("D:/luceneTest"));
//设置分词 StandardAnalyzer(会把句子中的字单个分词)
Analyzeranalyzer= new StandardAnalyzer(Version.LUCENE_45);
//设置索引写入配置
IndexWriterConfigconfig=new IndexWriterConfig(Version.LUCENE_45,analyzer);
//设置创建模式
//config.setOpenMode(IndexWriterConfig.OpenMode.CREATE_OR_APPEND);
IndexWriter indexwriter=new IndexWriter(d,config);
上面四行代码就创建好了indexwriter,下面把数据填入就好了,写入有多种方式如下图:
用 addDocment 举例代码如下:
Document doc=new Document();
doc.add(new StringField("id","1", Store.YES));
doc.add(new StringField("name","brockhong", Store.YES));
doc.add(new TextField("content","lucene文档第一次写看着给分吧", Store.YES));
//写入数据
indexwriter.addDocument(doc);
//提交
indexwriter.commit();
用 Luke 工具查看Text列,这是标准分词惹的祸哦!写入成功。
读数据查询,创建 IndexSearcher构造函数设置indexReader ,输入查询条件,上面content字段数据设置了分词,所以必须通过查询解析类QueryParser设定分词字段、版本、分词模式,并通过parse方法得到查询条件。代码如下:
//读数据
//创建 indexReader这个已过时 IndexReader.open(d),里面的代码一样可能为了兼容老版本
IndexReader indexReader =DirectoryReader.open(d);
IndexSearcher indexSearcher = new IndexSearcher(indexReader);
//查询设置分词字段
QueryParserqueryParser = new QueryParser(Version.LUCENE_45,"content",
new StandardAnalyzer(Version.LUCENE_45));
//or 关系“给”、“分”
queryParser.setDefaultOperator(QueryParser.OR_OPERATOR);
Query query =queryParser.parse("给分");
TopDocs results =indexSearcher.search(query, 100);
int numTotalHits =results.totalHits;
System.out.println("共 " + numTotalHits +"完全匹配的文档");
ScoreDoc[] hits =results.scoreDocs;
for (int i = 0; i < hits.length; i++) {
Document document = indexSearcher.doc(hits[i].doc);
System.out.println("content:" + document.get("content"));
}
- Lucene基础篇1 概论
- Lucene基础篇总结
- Lucene-基础篇
- Lucene基础篇2 Directory
- Lucene基础篇3 Analyzer
- Lucene 基础
- lucene基础
- Lucene 基础
- lucene基础
- lucene基础
- Lucene基础
- lucene基础
- Lucene基础
- 鸟哥的Linux私房菜(基础篇)-第零章、计算机概论(零.1)
- 计算机系统概论基础
- 大数据基础概论
- 计算语言学基础概论
- 概论篇
- Project Eluer - 22
- 使用自定义Adapter后 ListView刷新问题
- ORA-01502 oracle数据库 index索引的两种形式
- C++笔记: __attribute__的使用
- Freeswitch架构
- Lucene基础篇1 概论
- Spark SQL 1.2(building-spark1.2, sparksql on hive,spark-sql)
- Jquery getJSON方法分析(一)
- Comparable接口实现和使用方法介绍
- 使用Ant批量打包Android应用完全指南
- Linux下Mysql自启动
- 在Linux下adb连接不上android手机的终极解决方案
- iOS 在UILabel显示不同的字体和颜色
- ios NSArray