FuzzyQuery查询

FuzzyQuery查询(可以简单地识别两个相近的词语)

 

1.在FuzzyQuery类定义中定义了两个成员变量:

private float minimumSimilarity;

private int prefixLength;

minimumSimilarity是最小相似度,取值范围为0.0~1.0,包含0.0但不包含1.0,默认值为0.5。prefixLength是前缀长度,默认为0。

  minimumSimilarity表示是最小相似度,可以通过指定一个相似度来决定模糊匹配的严格程度。默认为0.5,当这个值越小,通过模糊查找出的文档的匹配程度就越低,文档的数量也就越多;当这个值越大,说明要匹配程度更大,匹配的文档数也就越少,当相似度设置为1,那么就退化为TermQuery查询,所以当这个值>=1或<0会抛出IllegalArgumentException异常。

另外一个参数prefixLength表示在进行模糊匹配的时候,要有多少个前缀字母必须完全匹配。例如当该值设置为“1”,则表示所有此条只有第一个字母与检索关键字相符时,才会被集合选中。

2.构造方法

使用FuzzyQuery要从的构造方法开始,该类给出3种构造方式:

第一种:

public FuzzyQuery(Term term, float minimumSimilarity, int prefixLength) throws IllegalArgumentException {

    super(term);

    if (minimumSimilarity >= 1.0f)

      throw new IllegalArgumentException("minimumSimilarity >= 1");

    else if (minimumSimilarity < 0.0f)

      throw new IllegalArgumentException("minimumSimilarity < 0");

    if (prefixLength < 0)

      throw new IllegalArgumentException("prefixLength < 0");

   

    this.minimumSimilarity = minimumSimilarity;

    this.prefixLength = prefixLength;

}

第二种:

public FuzzyQuery(Term term, float minimumSimilarity) throws IllegalArgumentException {

      this(term, minimumSimilarity, defaultPrefixLength);

}

第三种:

public FuzzyQuery(Term term) {

    this(term, defaultMinSimilarity, defaultPrefixLength);

}

3.实例

详见 http://www.haogongju.net/art/865455

你可能感兴趣的:(文档,float)