LUCENE-2667: apply fuzzyquery's new defaults to queryparsers in contrib, too

git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1024498 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Robert Muir 2010-10-20 02:12:58 +00:00
parent 45b9c24ee9
commit e596bad8d6
8 changed files with 31 additions and 33 deletions

View File

@ -378,7 +378,7 @@ public class StandardSyntaxParser implements SyntaxParser, StandardSyntaxParserC
boolean regexp = false;
QueryNode q =null;
ParametricQueryNode qLower, qUpper;
float defaultMinSimilarity = 0.5f;
float defaultMinSimilarity = org.apache.lucene.search.FuzzyQuery.defaultMinSimilarity;
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case TERM:
case REGEXPTERM:

View File

@ -378,7 +378,7 @@ QueryNode Term(CharSequence field) : {
boolean regexp = false;
QueryNode q =null;
ParametricQueryNode qLower, qUpper;
float defaultMinSimilarity = 0.5f;
float defaultMinSimilarity = org.apache.lucene.search.FuzzyQuery.defaultMinSimilarity;
}
{
(

View File

@ -99,7 +99,7 @@ public class TestMultiFieldQPHelper extends LuceneTestCase {
assertEquals("((b:one t:one)^2.0) (b:two t:two)", q.toString());
q = mfqp.parse("one~ two", null);
assertEquals("(b:one~0.5 t:one~0.5) (b:two t:two)", q.toString());
assertEquals("(b:one~2.0 t:one~2.0) (b:two t:two)", q.toString());
q = mfqp.parse("one~0.8 two^2", null);
assertEquals("(b:one~0.8 t:one~0.8) ((b:two t:two)^2.0)", q.toString());
@ -310,7 +310,7 @@ public class TestMultiFieldQPHelper extends LuceneTestCase {
q = parser.parse("bla*", null);
assertEquals("f1:bla* f2:bla* f3:bla*", q.toString());
q = parser.parse("bla~", null);
assertEquals("f1:bla~0.5 f2:bla~0.5 f3:bla~0.5", q.toString());
assertEquals("f1:bla~2.0 f2:bla~2.0 f3:bla~2.0", q.toString());
q = parser.parse("[a TO c]", null);
assertEquals("f1:[a TO c] f2:[a TO c] f3:[a TO c]", q.toString());
}

View File

@ -100,7 +100,7 @@ public class TestMultiFieldQueryParserWrapper extends LuceneTestCase {
assertEquals("((b:one t:one)^2.0) (b:two t:two)", q.toString());
q = mfqp.parse("one~ two");
assertEquals("(b:one~0.5 t:one~0.5) (b:two t:two)", q.toString());
assertEquals("(b:one~2.0 t:one~2.0) (b:two t:two)", q.toString());
q = mfqp.parse("one~0.8 two^2");
assertEquals("(b:one~0.8 t:one~0.8) ((b:two t:two)^2.0)", q.toString());
@ -314,7 +314,7 @@ public class TestMultiFieldQueryParserWrapper extends LuceneTestCase {
q = parser.parse("bla*");
assertEquals("f1:bla* f2:bla* f3:bla*", q.toString());
q = parser.parse("bla~");
assertEquals("f1:bla~0.5 f2:bla~0.5 f3:bla~0.5", q.toString());
assertEquals("f1:bla~2.0 f2:bla~2.0 f3:bla~2.0", q.toString());
q = parser.parse("[a TO c]");
assertEquals("f1:[a TO c] f2:[a TO c] f3:[a TO c]", q.toString());
}

View File

@ -500,12 +500,12 @@ public class TestQPHelper extends LuceneTestCase {
public void testWildcard() throws Exception {
assertQueryEquals("term*", null, "term*");
assertQueryEquals("term*^2", null, "term*^2.0");
assertQueryEquals("term~", null, "term~0.5");
assertQueryEquals("term~", null, "term~2.0");
assertQueryEquals("term~0.7", null, "term~0.7");
assertQueryEquals("term~^2", null, "term~0.5^2.0");
assertQueryEquals("term~^3", null, "term~2.0^3.0");
assertQueryEquals("term^2~", null, "term~0.5^2.0");
assertQueryEquals("term^3~", null, "term~2.0^3.0");
assertQueryEquals("term*germ", null, "term*germ");
assertQueryEquals("term*germ^3", null, "term*germ^3.0");
@ -517,7 +517,7 @@ public class TestQPHelper extends LuceneTestCase {
assertEquals(0.7f, fq.getMinSimilarity(), 0.1f);
assertEquals(FuzzyQuery.defaultPrefixLength, fq.getPrefixLength());
fq = (FuzzyQuery) getQuery("term~", null);
assertEquals(0.5f, fq.getMinSimilarity(), 0.1f);
assertEquals(2.0f, fq.getMinSimilarity(), 0.1f);
assertEquals(FuzzyQuery.defaultPrefixLength, fq.getPrefixLength());
assertQueryNodeException("term~1.1"); // value > 1, throws exception
@ -553,9 +553,9 @@ public class TestQPHelper extends LuceneTestCase {
assertWildcardQueryEquals("TE?M", false, "TE?M");
assertWildcardQueryEquals("Te?m*gerM", false, "Te?m*gerM");
// Fuzzy queries:
assertWildcardQueryEquals("Term~", "term~0.5");
assertWildcardQueryEquals("Term~", true, "term~0.5");
assertWildcardQueryEquals("Term~", false, "Term~0.5");
assertWildcardQueryEquals("Term~", "term~2.0");
assertWildcardQueryEquals("Term~", true, "term~2.0");
assertWildcardQueryEquals("Term~", false, "Term~2.0");
// Range queries:
// TODO: implement this on QueryParser
@ -857,10 +857,10 @@ public class TestQPHelper extends LuceneTestCase {
assertQueryEquals("a:b\\\\?c", a, "a:b\\?c");
assertQueryEquals("a:b\\-c~", a, "a:b-c~0.5");
assertQueryEquals("a:b\\+c~", a, "a:b+c~0.5");
assertQueryEquals("a:b\\:c~", a, "a:b:c~0.5");
assertQueryEquals("a:b\\\\c~", a, "a:b\\c~0.5");
assertQueryEquals("a:b\\-c~", a, "a:b-c~2.0");
assertQueryEquals("a:b\\+c~", a, "a:b+c~2.0");
assertQueryEquals("a:b\\:c~", a, "a:b:c~2.0");
assertQueryEquals("a:b\\\\c~", a, "a:b\\c~2.0");
// TODO: implement Range queries on QueryParser
assertQueryEquals("[ a\\- TO a\\+ ]", null, "[a- TO a+]");

View File

@ -501,12 +501,12 @@ public class TestQueryParserWrapper extends LuceneTestCase {
public void testWildcard() throws Exception {
assertQueryEquals("term*", null, "term*");
assertQueryEquals("term*^2", null, "term*^2.0");
assertQueryEquals("term~", null, "term~0.5");
assertQueryEquals("term~", null, "term~2.0");
assertQueryEquals("term~0.7", null, "term~0.7");
assertQueryEquals("term~^2", null, "term~0.5^2.0");
assertQueryEquals("term~^3", null, "term~2.0^3.0");
assertQueryEquals("term^2~", null, "term~0.5^2.0");
assertQueryEquals("term^3~", null, "term~2.0^3.0");
assertQueryEquals("term*germ", null, "term*germ");
assertQueryEquals("term*germ^3", null, "term*germ^3.0");
@ -518,7 +518,7 @@ public class TestQueryParserWrapper extends LuceneTestCase {
assertEquals(0.7f, fq.getMinSimilarity(), 0.1f);
assertEquals(FuzzyQuery.defaultPrefixLength, fq.getPrefixLength());
fq = (FuzzyQuery) getQuery("term~", null);
assertEquals(0.5f, fq.getMinSimilarity(), 0.1f);
assertEquals(2.0f, fq.getMinSimilarity(), 0.1f);
assertEquals(FuzzyQuery.defaultPrefixLength, fq.getPrefixLength());
assertParseException("term~1.1"); // value > 1, throws exception
@ -554,9 +554,9 @@ public class TestQueryParserWrapper extends LuceneTestCase {
assertWildcardQueryEquals("TE?M", false, "TE?M");
assertWildcardQueryEquals("Te?m*gerM", false, "Te?m*gerM");
// Fuzzy queries:
assertWildcardQueryEquals("Term~", "term~0.5");
assertWildcardQueryEquals("Term~", true, "term~0.5");
assertWildcardQueryEquals("Term~", false, "Term~0.5");
assertWildcardQueryEquals("Term~", "term~2.0");
assertWildcardQueryEquals("Term~", true, "term~2.0");
assertWildcardQueryEquals("Term~", false, "Term~2.0");
// Range queries:
// TODO: implement this on QueryParser
@ -850,10 +850,10 @@ public class TestQueryParserWrapper extends LuceneTestCase {
assertQueryEquals("a:b\\\\?c", a, "a:b\\?c");
assertQueryEquals("a:b\\-c~", a, "a:b-c~0.5");
assertQueryEquals("a:b\\+c~", a, "a:b+c~0.5");
assertQueryEquals("a:b\\:c~", a, "a:b:c~0.5");
assertQueryEquals("a:b\\\\c~", a, "a:b\\c~0.5");
assertQueryEquals("a:b\\-c~", a, "a:b-c~2.0");
assertQueryEquals("a:b\\+c~", a, "a:b+c~2.0");
assertQueryEquals("a:b\\:c~", a, "a:b:c~2.0");
assertQueryEquals("a:b\\\\c~", a, "a:b\\c~2.0");
// TODO: implement Range queries on QueryParser
assertQueryEquals("[ a\\- TO a\\+ ]", null, "[a- TO a+]");

View File

@ -64,11 +64,8 @@ Improves on FuzzyQuery by rewarding all fuzzy variants of a term with the same I
<!-- Controls the level of similarity required for fuzzy variants where 1 is identical and 0.5 is that the variant contains
half of the original's characters in the same order. Lower values produce more results but may take longer to execute due to
additional IO required to read matching document ids-->
<!ATTLIST Field minSimilarity CDATA "0.5">
<!ATTLIST Field minSimilarity CDATA "2.0">
<!-- Controls the minimum number of characters at the start of fuzzy variant words that must exactly match the original.
A value of zero will require no minimum and the search software will effectively scan ALL terms from a to z looking for variations.
This can incur high CPU overhead and a prefix length of just "1" will reduce this overhead to 1/26th of the original cost (assuming
an even distribution of letters used from the alphabet).
-->
<!ATTLIST Field prefixLength CDATA "1">
<!-- fieldName must be defined here or is taken from the most immediate parent XML element that defines a "fieldName" attribute -->

View File

@ -2,6 +2,7 @@ package org.apache.lucene.xmlparser.builders;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.search.FuzzyLikeThisQuery;
import org.apache.lucene.search.FuzzyQuery;
import org.apache.lucene.search.Query;
import org.apache.lucene.xmlparser.DOMUtils;
import org.apache.lucene.xmlparser.ParserException;
@ -32,7 +33,7 @@ import org.w3c.dom.NodeList;
public class FuzzyLikeThisQueryBuilder implements QueryBuilder
{
int defaultMaxNumTerms=50;
float defaultMinSimilarity=0.5f;
float defaultMinSimilarity=FuzzyQuery.defaultMinSimilarity;
int defaultPrefixLength=1;
boolean defaultIgnoreTF=false;
private Analyzer analyzer;