zoukankan      html  css  js  c++  java
  • Lucene

     Lucene

    • 全文检索引擎工具包
    • 文档: Document
      • 包含了一个或多个域的容器;
        • field:value    

     域:

    • 域有很多选项  
    索引选项、存储选项、域向量使用选项;  
    • 索引选项用于通过倒排索引来控制文本是否可被搜索:  
    Index:ANYLYZED:分析(切词)并单独作为索引项;
    
    Index.Not_ANYLYZED:不分析(不切词),把整个内容当一个索引项;
    
    Index.ANYLYZED_NORMS:类似于Index:ANALYZED,但不存储token的Norms(加权基准)信息;
    
    Index.Not_ANYLYZED_NORMS:类似于Index:Not_ANALYZED,但不存储值的Norms(加权基准)信息;
    
    Index.NO: 不对此域的值进行索引;因此不能被搜索;  
    • 存储选项:是否需要存储域的真实值;  
    title:This is a Notebook.
    
    store.YES:存储真实值
    store.NO:不存储真实值  
    • 域向量选项用于在搜索期间该文档所有的唯一项都能完全从文档中检索时使用  
    • 文档和域的加权操作
      • 加权计算标准  

     搜索:

    • 查询Lucene索引时,它返回的是一个有序的scoreDoc对象;查询时,Lucene会为每个文档计算出其score  
    • API  
    IndexSearcher:搜索索引入口;
    Query及其子类:
    QueryParser
    TopDocs
    ScoreDoc  

     Lucene的多样化查询:

    • IndexSearcher中的search方法    
    TermQuery:对索引中的特定项进行搜索;Term是索引中的最小索引片段,每个Term包含了一个域名和一个文本值;
        title:This is a Desk.
        owner: Tom Blair
        description: this is a desk, it's belong to Tom.
    
        title: This is a table.
        owner: Clinton
        description: this is a desk, it's belong to Clinton.
            This: (1) (2)
            Desk: (1)
            table: (2)      
    
    
    TermRangeQuery:在索引中的多个特定项中进行搜索,能搜索指定的多个域;
    NumericRangeQuery:做数值范围搜索;
    PrefixQuery:用于搜索以指定字符串开头的项;
    BooleanQuery:用于实现组合查询;组合逻辑有: AND, OR, NOT;
    PhraseQuery:
    WildcardQuery:
    FuzzyQuery:模糊查询;Levenshtein
    
  • 相关阅读:
    java日常问题和技巧1(BigDecimal与int相互转换、判断某元素是否在数组中、求两个List并集、int[]转Integer[])
    窗口小部件基础编写V1.0----没有Service
    使用MyBatis遇到的问题及解决方法(一)(持续更新)
    java工具类集合(一)
    idea部分操作(一)----持续更新
    单向链表(篇九)
    结构体(篇八)
    指针与字符串(篇七)
    数组字符串(篇六)
    循环与函数(篇五)
  • 原文地址:https://www.cnblogs.com/evescn/p/8400001.html
Copyright © 2011-2022 走看看