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