mirror of
https://github.com/apache/lucene.git
synced 2025-02-15 06:25:56 +00:00
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:
parent
45b9c24ee9
commit
e596bad8d6
@ -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:
|
||||
|
@ -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;
|
||||
}
|
||||
{
|
||||
(
|
||||
|
@ -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());
|
||||
}
|
||||
|
@ -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());
|
||||
}
|
||||
|
@ -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+]");
|
||||
|
@ -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+]");
|
||||
|
@ -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 -->
|
||||
|
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user