美文网首页
lucene使用总结

lucene使用总结

作者: code_plus | 来源:发表于2017-05-30 20:00 被阅读0次

    Lucene

    基本概念

    Lucene在对信息索引时,有一些基本的抽象概念。

    1. Document是搜索的基本单元,相当于关系型数据库的一行。
    2. Field是document的组成部分,相当于关系型数据库的列。
    3. Query是基本的查询,包括指定的field和需要查询的词

    在一次普通的查询中,query是针对某个field的查询,查询结果包括包含这个field同时满足查询词要求的document。

    查询类型

    项查询

    TermQuery是最基本的查询,构造时需要提供查询的field和查询词。

    Term t = new Term("title","java");
    Query query = new TermQuery(t);
    
    

    范围查询

    TermRangeQuery和NumericRangeQuery表示范围查询,前者主要是基于英文字母的field,后者主要是基于数字类型的field。

    字符串查询

    PrefixQuery 字符串前缀搜索

    Term t = new Term("category","/technology/computers/programming");
    PrefixQuery query = new PrefixQuery(t);
    
    

    组合查询

    BooleanQuery,布尔查询可以将基本的查询通过布尔关系:与、或和非,组合起来进行查询,而且布尔查询支持嵌套。

    短语查询

    PhraseQuery, 按照短语进行查询,可以设置短语的“距离”,用slop表示,默认为0

    PhraseQuery query = new PhraseQuery();
    query.setSlop(0);
    query.add(new Term("field", "word"))
    ...
    
    

    通配符查询

    WildcardQuery,支持*和?两种通配符。

    模糊搜索

    FuzzyQuery基于编辑距离计算term的相似性,主要应用在英文。

    匹配所有文档

    MatchAllDocsQuery

    相关文章

      网友评论

          本文标题:lucene使用总结

          本文链接:https://www.haomeiwen.com/subject/rowrfxtx.html