Lucene的应用 : 软件内部搜索 ; 站内搜索 ; 垂直领域的搜索 ; 互联网搜索引擎
信息检索的过程 : 构建文本库 ; 建立索引 ; 进行搜索 ; 对结果进行排序
Lucene是全文检索框架 , apache提供 (对数据建立全文索引 , 根据全文搜索信息)
Luke工具可查看lucene建立的索引 , 很遗憾的是目前只支持到lucene版本的4.0
建立索引
将数据转换成Document对象 , 每个数据信息转换 Field (String name , String value , Field.Store store , Field . Index index)
指定索引库位置 Directory directory = FSDirectory . open ( new File ("index") )
分词器 Analyzer analyzer = new StandardAnalyzer(Version . Lucene_36)
写入索引 IndexWriterConfig indexWriterConfig = new IndexWriterConfig(Version.LUCENE_36, analyzer);
IndexWriter indexWriter = new IndexWriter(directory, indexWriterConfig);
indexWriter.addDocument(document); // 将document数据写入索引库
查询索引库
1. 单词条查找
TermQuery query = new TermQuery(new Term("字段名称","查询值"));
2 . 单个字段查找
QueryParser queryParser=new QueryParser( 版本 , "字段名称", 分词器 );
Query query = queryParser.parse("查询值");
3 . 多字段查询
QueryParser queryParser=new MultiFieldQueryParser( 版本 , new String[]{"字段名称","字段名称"}, 分词器 );
Query query = queryParser.parse("查询值");
4 . 范围搜索
TermRangeQuery query = new TermRangeQuery("字段名称", 最小值, 最大值 , 是否包含最小值, 包含最大值 );
5 . 匹配所有搜索
Query query = new MatchAllDocsQuery();
6 . 模糊搜索
Query query=new WildcardQuery(new Term("字段名称", " * 查询值 * "));
7 . 相似度搜索
Query query=new FuzzyQuery(new Term("字段名称","查询值"), 容错值);
8 . 组合条件查询
Query query1=new TermQuery(new Term("字段名称","查询值"));
Query query2=new TermQuery(new Term("字段名称", "查询值"));
BooleanQuery bq=new BooleanQuery();
bq.add(query1, 组合形式);
bq.add(query2, 组合形式);