-
【存储域选项】 Field.Store.Yes or NO 【存储域选项】
设置为YES表示会将域中的内容完全存储到文件中,方便进行文本的还原;
NO表示这个域的内容不存储在文件中,但是可以被索引,此时内容无法完全还原; -
【索引选项】Field.Index
Index.ANALYZED:进行分词和索引,适用于标题、内容等;
Index.NOT_ANALYZED:进行索引,但是不进行分词,适用于身份证号、姓名、ID等,适用于精确搜索;
Index.ANALYZED_NOT_NORMS:进行分词,但是不存储norm信息,这个norm中包括了创建索引的时间和权值等信息;
Index.NOT_ANALYZED_NOT_NORMS:既不进行分词也不存储norm信息;
Index.NO:不进行索引 -
ANALYZED 分词; NORM 加权;(是否存储,是否分词,是否加权)
-
.fnm 保存的是域的信息(eg:filename、content等);
.fdt .fdx 保存的是STORE为YES的数据;
.frq 词条出现的频率;
.nrm 存储评分信息;
.tii .tis 存储的是索引中的内容信息;
.del 删除的文档并不会被完全删除,而是被存储在回收站中; -
搜索的简单实现(TermQuery)
(1)创建IndexReader;
(2)创建IndexSearcher;
(3)创建Term和TermQuery;
(4)根据TermQuery获取TopDocs;
(5)根据TopDocs获取ScoreDoc;
(6)根据ScoreDoc获取对应文档;
其他搜索(Query):
(1)TermRangeQuery
(2)NumericRange
(3)PrefixQuery 前缀搜索
(4)WildcardQuery 通配符查询
(5)BooleanQuery 组合查询(可以连接过个条件)
(6)PhraseQuery 短语索引
(7)FuzzyQuery 模糊查询 -
分词的过程
Reader——(tokenier)——MMSeg——(filter)——Filter -
分词工具用过很多,比如jieba,mmseg,hanlp,ICTCLAS等等,分词算法也用过了很多从正向匹配,反向匹配,CRF,HMM,再到现在的BiLSTM+CRF。
分词工具只是一个工具,强调分词效果的一定在做搜索,做数据分析反而对分词好坏优劣不太关注。现在DL模型的wordembeding可能不关注分词的p、r和f1,但是做搜索可能比较关注。CRF需要有标注、有预料。
lucene 粗略地图
网友评论