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
    
  • 相关阅读:
    Springboot日志初探
    Slf4j初探
    Log4j日志初探
    Nacos集群初探
    python初学者必看学习路线图!!!
    ubuntu无法设置为中文怎么办?(适用于ubuntu14.04/16.04)
    PythonGUI编程(Tkinter)-基本概念以及核心开发步骤
    Python学生信息管理系统(注释最详细,小白都看的懂)
    Python面向对象分析存放家具
    面向对象分析烤地瓜项目
  • 原文地址:https://www.cnblogs.com/evescn/p/8400001.html
Copyright © 2011-2022 走看看