Lucene简介
文档:Document
包含了一个或多个域的容器;
field:value
域:
有很多选项
索引选项、存储选项、域向量使用选项
可以单个使用,也可组合起来使用
索引选项用于通过倒排索引来控制文本是否可被搜索;
Index.ANYLYZED:分析(切词)并单独作为索引项;
Index.Not_ANYLYZED:不分析(不切词),把整个内容当一个索引项;
Index.ANYLYZED_NORMS:类似于Index.ANYLYZED,但不存储token的Norms(加权基准)信息
Index.Not_ANYLYZED_NORMS:类似于Index:Not_ANYLYZED,但不存储token的Norms(加权基准)信息
Index.NO:不对此域的值进行索引;因此不能被索引
存储选项;是否需要存储域的真实值(分析前的内容)
store.YES:存储真实值
store.NO:不存储真实值
域向量选项用于在搜索期间该文档所有的唯一项都能完全从文档中检索时使用;
文档和域的加权操作
加权计算标准
搜索:
查询Lucene索引时,它返回的是一个有序的scoreDoc对象;查询时,Lucene会为每个文档计算出其score,根据score进行排序
API:
IndexSearcher:搜索索引入口;
Query及其子类:
QueryParser:
TopDocs
ScoreDoc
Lucene的多样化查询:
IndexSearcher中的search方法;
TermQuery:对索引中的特定项进行搜索,term是索引中的最小索引片段,每个Term包含了一个域名和一个文本值
TermRangeQuery:在索引中的多个特定项中进行搜索,能搜索制定的多个域;
NumericRangeQuery:做数值范围搜索;
PrefixQuery:用于搜索以制定字符串开头的项;
BooleanQuery:用于实现组合查询;组合逻辑有:AND,OR,Not
PhraseQuery:
WildcardQuery:通配符
FuzzyQuery:模糊查询,levenshtein