一、索引库维护
1、添加索引
代码实现:
调用 indexWriter.addDocument(doc)添加索引。
2、删除索引
调用 indexWriter.deleteDocuments(doc)删除索引。
3、清空索引库
调用 indexWriter.deleteAll()清空索引库。
4、更新索引
调用 indexWriter.updateDocument(doc)更新索引。
二、 搜索
1、使用Lucene提供Query子类查询
Query是一个抽象类,lucene提供了很多查询对象,比如TermQuery项精确查询,NumericRangeQuery数字范围查询等。
(1)使用TermQuery实例化
(2)使用QueryParse解析查询表达式
2、常用的Query子类搜索
(1) TermQuery
查询的关键词不会再做分词处理,作为整体来搜索。
不会再对查询的关键词做分词处理。
(2)NumericRangeQuery
指定数字范围查询
(3) BooleanQuery
布尔查询,实现组合条件查询。
2、通过QueryParser搜索
特点:
对搜索的关键词,做分词处理。
(1)QueryParser:对单个域查询。
(2)MulitFieldQueryParse:对多个域查询。
三、 中文分词器
1、什么是中文分词器
学过英文的都知道,英文是以单词为单位的,单词与单词之间以空格或者逗号句号隔开。
而中文的语义比较特殊,很难像英文那样,一个汉字一个汉字来划分。
所以需要一个能自动识别中文语义的分词器。
2、Lucene自带的中文分词器
(1) StandardAnalyzer:
单字分词:就是按照中文一个字一个字地进行分词。如:“我爱中国”, 效果:“我”、“爱”、“中”、“国”。
(2)CJKAnalyzer
二分法分词:按两个字进行切分。如:“我是中国人”,效果:“我是”、“是中”、“中国”“国人”。
(3)使用中文分词器IKAnalyzer
IKAnalyzer继承Lucene的Analyzer抽象类,使用IKAnalyzer和Lucene自带的分析器方法一样,将Analyzer测试代码改为IKAnalyzer测试中文分词效果。
如果使用中文分词器ik-analyzer,就在索引和搜索程序中使用一致的分词器ik-analyzer。
网友评论