lucene学习笔记

 

1.Analyzer(分词)

第一部分,在

 

QueryParser的protected Query getFieldQuery(String field, String queryText) 

 

的QueryParser.jj_consume_token会先将查询按空格分类。这里的每个空格隔开的都是不同的查询条件,可以取并集。

 

然后tokenlizer会对每个词再做一次分词,这个分词可能分出来就是短语分词之类的了。

 

具体的分词参考:http://www.cnblogs.com/huangfox/archive/2012/06/16/2551779.html

 

2.  search

大致的类图:


lucene学习笔记_第1张图片

 

 

 

search的各种接口最终调用的都是这个函数

 

 

public void search(Weight weight, Filter filter,
                     final HitCollector results)

 对于传入Query的情况,会将Query转换为Weight再调用这个函数。

 

 

2.1.score

score用于在检索后的排序

 

  public void score(HitCollector hc) throws IOException {
    while (next()) {
      hc.collect(doc(), score());
    }
  }
 

 

2.2 Similarity

Similarity用来计算相似度,一般在score()中调用,类似这样:

 

getSimilarity().coord(..)

通过 public void setSimilarity改变计分规则。

 

 

2.3 示例代码

 

参考:https://github.com/zldeng1984/dzl/tree/master/java-learn-1/src/main/java/org/apache/lucene/demo/mytest

 

3.index

3.1 

 

3.2

 

4. 用法:

可以覆盖的有Analyzer(Tokenizer),Filter,HitCollector,Similarity来影响检索的结果。Analyzer还可以影响创建索引的结果

 

你可能感兴趣的:(Lucene)