lucene入门基础2

  • 【存储域选项】 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 粗略地图

你可能感兴趣的:(lucene入门基础2)