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

 

posted @ 2018-02-01 17:07  evescn  阅读(166)  评论(0编辑  收藏  举报