You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by rm...@apache.org on 2011/08/23 16:07:19 UTC
svn commit: r1160700 [3/22] - in /lucene/dev/branches/flexscoring: ./
dev-tools/eclipse/ dev-tools/idea/.idea/ dev-tools/idea/lucene/contrib/
dev-tools/idea/lucene/contrib/demo/
dev-tools/idea/lucene/contrib/highlighter/ dev-tools/idea/lucene/contrib/q...
Modified: lucene/dev/branches/flexscoring/lucene/contrib/misc/src/test/org/apache/lucene/store/TestNRTCachingDirectory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/lucene/contrib/misc/src/test/org/apache/lucene/store/TestNRTCachingDirectory.java?rev=1160700&r1=1160699&r2=1160700&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/lucene/contrib/misc/src/test/org/apache/lucene/store/TestNRTCachingDirectory.java (original)
+++ lucene/dev/branches/flexscoring/lucene/contrib/misc/src/test/org/apache/lucene/store/TestNRTCachingDirectory.java Tue Aug 23 14:06:58 2011
@@ -18,7 +18,9 @@ package org.apache.lucene.store;
*/
import java.io.File;
+import java.io.IOException;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
import org.apache.lucene.analysis.Analyzer;
@@ -117,4 +119,68 @@ public class TestNRTCachingDirectory ext
assertEquals(0, dir.listAll().length);
dir.close();
}
+
+ // LUCENE-3382 -- make sure we get exception if the directory really does not exist.
+ public void testNoDir() throws Throwable {
+ Directory dir = new NRTCachingDirectory(newFSDirectory(_TestUtil.getTempDir("doesnotexist")), 2.0, 25.0);
+ try {
+ IndexReader.open(dir, true);
+ fail("did not hit expected exception");
+ } catch (NoSuchDirectoryException nsde) {
+ // expected
+ }
+ dir.close();
+ }
+
+ // LUCENE-3382 test that we can add a file, and then when we call list() we get it back
+ public void testDirectoryFilter() throws IOException {
+ Directory dir = new NRTCachingDirectory(newFSDirectory(_TestUtil.getTempDir("foo")), 2.0, 25.0);
+ String name = "file";
+ try {
+ dir.createOutput(name, newIOContext(random)).close();
+ assertTrue(dir.fileExists(name));
+ assertTrue(Arrays.asList(dir.listAll()).contains(name));
+ } finally {
+ dir.close();
+ }
+ }
+
+ // LUCENE-3382 test that delegate compound files correctly.
+ public void testCompoundFileAppendTwice() throws IOException {
+ Directory newDir = new NRTCachingDirectory(newDirectory(), 2.0, 25.0);
+ CompoundFileDirectory csw = newDir.createCompoundOutput("d.cfs", newIOContext(random));
+ createSequenceFile(newDir, "d1", (byte) 0, 15);
+ IndexOutput out = csw.createOutput("d.xyz", newIOContext(random));
+ out.writeInt(0);
+ try {
+ newDir.copy(csw, "d1", "d1", newIOContext(random));
+ fail("file does already exist");
+ } catch (IOException e) {
+ //
+ }
+ out.close();
+ assertEquals(1, csw.listAll().length);
+ assertEquals("d.xyz", csw.listAll()[0]);
+
+ csw.close();
+
+ CompoundFileDirectory cfr = newDir.openCompoundInput("d.cfs", newIOContext(random));
+ assertEquals(1, cfr.listAll().length);
+ assertEquals("d.xyz", cfr.listAll()[0]);
+ cfr.close();
+ newDir.close();
+ }
+
+ /** Creates a file of the specified size with sequential data. The first
+ * byte is written as the start byte provided. All subsequent bytes are
+ * computed as start + offset where offset is the number of the byte.
+ */
+ private void createSequenceFile(Directory dir, String name, byte start, int size) throws IOException {
+ IndexOutput os = dir.createOutput(name, newIOContext(random));
+ for (int i=0; i < size; i++) {
+ os.writeByte(start);
+ start ++;
+ }
+ os.close();
+ }
}
Copied: lucene/dev/branches/flexscoring/lucene/contrib/sandbox/src/java/org/apache/lucene/sandbox/queries/FuzzyLikeThisQuery.java (from r1160237, lucene/dev/trunk/lucene/contrib/sandbox/src/java/org/apache/lucene/sandbox/queries/FuzzyLikeThisQuery.java)
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/lucene/contrib/sandbox/src/java/org/apache/lucene/sandbox/queries/FuzzyLikeThisQuery.java?p2=lucene/dev/branches/flexscoring/lucene/contrib/sandbox/src/java/org/apache/lucene/sandbox/queries/FuzzyLikeThisQuery.java&p1=lucene/dev/trunk/lucene/contrib/sandbox/src/java/org/apache/lucene/sandbox/queries/FuzzyLikeThisQuery.java&r1=1160237&r2=1160700&rev=1160700&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/contrib/sandbox/src/java/org/apache/lucene/sandbox/queries/FuzzyLikeThisQuery.java (original)
+++ lucene/dev/branches/flexscoring/lucene/contrib/sandbox/src/java/org/apache/lucene/sandbox/queries/FuzzyLikeThisQuery.java Tue Aug 23 14:06:58 2011
@@ -31,6 +31,8 @@ import org.apache.lucene.index.IndexRead
import org.apache.lucene.index.MultiFields;
import org.apache.lucene.index.Term;
import org.apache.lucene.search.*;
+import org.apache.lucene.search.similarities.TFIDFSimilarity;
+import org.apache.lucene.search.similarities.DefaultSimilarity;
import org.apache.lucene.util.AttributeSource;
import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.PriorityQueue;
Modified: lucene/dev/branches/flexscoring/lucene/contrib/spatial/build.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/lucene/contrib/spatial/build.xml?rev=1160700&r1=1160699&r2=1160700&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/lucene/contrib/spatial/build.xml (original)
+++ lucene/dev/branches/flexscoring/lucene/contrib/spatial/build.xml Tue Aug 23 14:06:58 2011
@@ -25,21 +25,10 @@
<import file="../contrib-build.xml"/>
- <contrib-uptodate name="queries-contrib" contrib-src-name="queries" property="queries.uptodate" classpath.property="queries.jar" />
-
<path id="classpath">
<pathelement path="${queries.jar}"/>
<path refid="base.classpath"/>
</path>
- <target name="compile-core" depends="build-queries, common.compile-core" />
-
- <target name="build-queries" unless="queries.uptodate">
- <echo>Misc building dependency ${queries.jar}</echo>
- <ant antfile="../queries/build.xml" target="default" inheritall="false" dir="../queries">
- <propertyset refid="uptodate.and.compiled.properties"/>
- </ant>
- <property name="queries.uptodate" value="true"/>
- </target>
-
+ <target name="compile-core" depends="jar-queries, common.compile-core" />
</project>
Modified: lucene/dev/branches/flexscoring/lucene/contrib/spatial/src/java/org/apache/lucene/spatial/tier/DistanceQueryBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/lucene/contrib/spatial/src/java/org/apache/lucene/spatial/tier/DistanceQueryBuilder.java?rev=1160700&r1=1160699&r2=1160700&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/lucene/contrib/spatial/src/java/org/apache/lucene/spatial/tier/DistanceQueryBuilder.java (original)
+++ lucene/dev/branches/flexscoring/lucene/contrib/spatial/src/java/org/apache/lucene/spatial/tier/DistanceQueryBuilder.java Tue Aug 23 14:06:58 2011
@@ -18,7 +18,7 @@
package org.apache.lucene.spatial.tier;
import org.apache.lucene.search.ConstantScoreQuery;
-import org.apache.lucene.search.ChainedFilter;
+import org.apache.lucene.queries.ChainedFilter;
import org.apache.lucene.search.Filter;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.QueryWrapperFilter;
Modified: lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/build.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/build.xml?rev=1160700&r1=1160699&r2=1160700&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/build.xml (original)
+++ lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/build.xml Tue Aug 23 14:06:58 2011
@@ -25,81 +25,12 @@
<import file="../contrib-build.xml"/>
- <contrib-uptodate name="queries-contrib" contrib-src-name="queries" property="queries-contrib.uptodate" classpath.property="queries-contrib.jar"/>
- <property name="lucene.jar" location="${common.dir}/build/lucene-core-${version}.jar"/>
- <property name="servlet.jar" location="${common.dir}/lib/servlet-api-2.4.jar"/>
- <available property="servlet.jar.present" type="file" file="${servlet.jar}"/>
- <module-uptodate name="queryparser" property="queryparser.uptodate" classpath.property="queryparser.jar"/>
- <module-uptodate name="queries" property="queries.uptodate" classpath.property="queries.jar"/>
-
-
<path id="classpath">
- <pathelement path="${queries-contrib.jar}"/>
- <pathelement path="${queryparser.jar}"/>
- <pathelement path="${queries.jar}"/>
- <path refid="base.classpath"/>
- </path>
-
- <path id="web-classpath">
- <pathelement path="${queries-contrib.jar}"/>
<pathelement path="${queryparser.jar}"/>
<pathelement path="${queries.jar}"/>
- <pathelement path="${servlet.jar}"/>
- <pathelement path="${build.dir}/${final.name}.jar"/>
+ <pathelement path="${sandbox.jar}"/>
<path refid="base.classpath"/>
</path>
- <target name="compile-core" depends="build-queries-contrib,build-queryparser,build-queries,common.compile-core" />
-
- <target name="build-queries-contrib" unless="queries-contrib.uptodate">
- <echo>XML Parser building dependency ${queries.jar}</echo>
- <ant antfile="../queries/build.xml" target="default" inheritall="false" dir="../queries">
- <propertyset refid="uptodate.and.compiled.properties"/>
- </ant>
- <property name="queries-contrib.uptodate" value="true"/>
- </target>
-
- <!-- override contrib-build.xml target to also build web demo -->
- <target name="build-artifacts-and-tests" depends="jar, compile-test,build-web-demo" />
-
- <target name="default" depends="jar-core,build-web-demo"/>
-
- <target name="build-web-demo" description="Compiles demo" if="servlet.jar.present">
-
- <echo>XML Parser compiling web demo</echo>
-
- <ant dir="${common.dir}" target="jar-core" inheritAll="false"/>
-
- <compile
- srcdir="src/demo/java"
- destdir="${build.dir}/classes/webdemo">
- <classpath refid="web-classpath"/>
- </compile>
-
- <war destfile="${build.dir}/xml-query-demo.war" webxml="src/demo/WebContent/WEB-INF/web.xml">
- <fileset dir="src/demo/WebContent"/>
- <lib dir="${build.dir}">
- <include name="${final.name}.jar"/>
- </lib>
- <lib file="${queries.jar}"/>
- <lib file="${lucene.jar}"/>
- <classes dir="${build.dir}/classes/webdemo"/>
- </war>
-
- </target>
-
- <target name="build-queryparser" unless="queryparser.uptodate">
- <echo>XML QueryParser building dependency modules/queryparser</echo>
- <subant target="default">
- <fileset dir="${common.dir}/../modules/queryparser" includes="build.xml"/>
- </subant>
- </target>
-
- <target name="build-queries" unless="queries.uptodate">
- <echo>XML QueryParser building dependency modules/queries</echo>
- <subant target="default">
- <fileset dir="${common.dir}/../modules/queries" includes="build.xml"/>
- </subant>
- </target>
-
+ <target name="compile-core" depends="jar-sandbox,jar-queryparser,jar-queries,common.compile-core" />
</project>
Modified: lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/CoreParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/CoreParser.java?rev=1160700&r1=1160699&r2=1160700&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/CoreParser.java (original)
+++ lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/CoreParser.java Tue Aug 23 14:06:58 2011
@@ -1,10 +1,5 @@
package org.apache.lucene.xmlparser;
-import java.io.InputStream;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.queryparser.classic.QueryParser;
import org.apache.lucene.search.Query;
@@ -12,6 +7,10 @@ import org.apache.lucene.xmlparser.build
import org.w3c.dom.Document;
import org.w3c.dom.Element;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import java.io.InputStream;
+
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
@@ -28,143 +27,130 @@ import org.w3c.dom.Element;
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
/**
* Assembles a QueryBuilder which uses only core Lucene Query objects
- *
*/
-public class CoreParser implements QueryBuilder
-{
-
- protected Analyzer analyzer;
- protected QueryParser parser;
- protected QueryBuilderFactory queryFactory;
- protected FilterBuilderFactory filterFactory;
- //Controls the max size of the LRU cache used for QueryFilter objects parsed.
- public static int maxNumCachedFilters=20;
-
-
- /**
- * Construct an XML parser that uses a single instance QueryParser for handling
- * UserQuery tags - all parse operations are synchronised on this parser
- * @param analyzer
- * @param parser A QueryParser which will be synchronized on during parse calls.
- */
- public CoreParser(Analyzer analyzer, QueryParser parser)
- {
- this(null,analyzer,parser);
- }
-
- /**
- * Constructs an XML parser that creates a QueryParser for each UserQuery request.
- * @param defaultField The default field name used by QueryParsers constructed for UserQuery tags
- * @param analyzer
- */
- public CoreParser(String defaultField, Analyzer analyzer)
- {
- this(defaultField,analyzer,null);
- }
-
- protected CoreParser(String defaultField,Analyzer analyzer, QueryParser parser)
- {
- this.analyzer=analyzer;
- this.parser=parser;
- filterFactory = new FilterBuilderFactory();
- filterFactory.addBuilder("RangeFilter",new RangeFilterBuilder());
- filterFactory.addBuilder("NumericRangeFilter",new NumericRangeFilterBuilder());
-
- queryFactory = new QueryBuilderFactory();
- queryFactory.addBuilder("TermQuery",new TermQueryBuilder());
- queryFactory.addBuilder("TermsQuery",new TermsQueryBuilder(analyzer));
- queryFactory.addBuilder("MatchAllDocsQuery",new MatchAllDocsQueryBuilder());
- queryFactory.addBuilder("BooleanQuery",new BooleanQueryBuilder(queryFactory));
- queryFactory.addBuilder("NumericRangeQuery",new NumericRangeQueryBuilder());
- if(parser!=null)
- {
- queryFactory.addBuilder("UserQuery",new UserInputQueryBuilder(parser));
- }
- else
- {
- queryFactory.addBuilder("UserQuery",new UserInputQueryBuilder(defaultField,analyzer));
- }
- queryFactory.addBuilder("FilteredQuery",new FilteredQueryBuilder(filterFactory,queryFactory));
- queryFactory.addBuilder("ConstantScoreQuery",new ConstantScoreQueryBuilder(filterFactory));
-
- filterFactory.addBuilder("CachedFilter",new CachedFilterBuilder(queryFactory,
- filterFactory, maxNumCachedFilters));
-
-
- SpanQueryBuilderFactory sqof=new SpanQueryBuilderFactory();
-
- SpanNearBuilder snb=new SpanNearBuilder(sqof);
- sqof.addBuilder("SpanNear",snb);
- queryFactory.addBuilder("SpanNear",snb);
-
- BoostingTermBuilder btb=new BoostingTermBuilder();
- sqof.addBuilder("BoostingTermQuery",btb);
- queryFactory.addBuilder("BoostingTermQuery",btb);
-
- SpanTermBuilder snt=new SpanTermBuilder();
- sqof.addBuilder("SpanTerm",snt);
- queryFactory.addBuilder("SpanTerm",snt);
-
- SpanOrBuilder sot=new SpanOrBuilder(sqof);
- sqof.addBuilder("SpanOr",sot);
- queryFactory.addBuilder("SpanOr",sot);
-
- SpanOrTermsBuilder sots=new SpanOrTermsBuilder(analyzer);
- sqof.addBuilder("SpanOrTerms",sots);
- queryFactory.addBuilder("SpanOrTerms",sots);
-
- SpanFirstBuilder sft=new SpanFirstBuilder(sqof);
- sqof.addBuilder("SpanFirst",sft);
- queryFactory.addBuilder("SpanFirst",sft);
-
- SpanNotBuilder snot=new SpanNotBuilder(sqof);
- sqof.addBuilder("SpanNot",snot);
- queryFactory.addBuilder("SpanNot",snot);
- }
-
- public Query parse(InputStream xmlStream) throws ParserException
- {
- return getQuery(parseXML(xmlStream).getDocumentElement());
- }
-
- public void addQueryBuilder(String nodeName,QueryBuilder builder)
- {
- queryFactory.addBuilder(nodeName,builder);
- }
- public void addFilterBuilder(String nodeName,FilterBuilder builder)
- {
- filterFactory.addBuilder(nodeName,builder);
- }
-
- private static Document parseXML(InputStream pXmlFile) throws ParserException
- {
- DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
- DocumentBuilder db = null;
- try
- {
- db = dbf.newDocumentBuilder();
- }
- catch (Exception se)
- {
- throw new ParserException("XML Parser configuration error", se);
- }
- org.w3c.dom.Document doc = null;
- try
- {
- doc = db.parse(pXmlFile);
- }
- catch (Exception se)
- {
- throw new ParserException("Error parsing XML stream:" + se, se);
- }
- return doc;
- }
-
+public class CoreParser implements QueryBuilder {
+
+ protected Analyzer analyzer;
+ protected QueryParser parser;
+ protected QueryBuilderFactory queryFactory;
+ protected FilterBuilderFactory filterFactory;
+ //Controls the max size of the LRU cache used for QueryFilter objects parsed.
+ public static int maxNumCachedFilters = 20;
+
+
+ /**
+ * Construct an XML parser that uses a single instance QueryParser for handling
+ * UserQuery tags - all parse operations are synchronised on this parser
+ *
+ * @param analyzer
+ * @param parser A QueryParser which will be synchronized on during parse calls.
+ */
+ public CoreParser(Analyzer analyzer, QueryParser parser) {
+ this(null, analyzer, parser);
+ }
+
+ /**
+ * Constructs an XML parser that creates a QueryParser for each UserQuery request.
+ *
+ * @param defaultField The default field name used by QueryParsers constructed for UserQuery tags
+ * @param analyzer
+ */
+ public CoreParser(String defaultField, Analyzer analyzer) {
+ this(defaultField, analyzer, null);
+ }
+
+ protected CoreParser(String defaultField, Analyzer analyzer, QueryParser parser) {
+ this.analyzer = analyzer;
+ this.parser = parser;
+ filterFactory = new FilterBuilderFactory();
+ filterFactory.addBuilder("RangeFilter", new RangeFilterBuilder());
+ filterFactory.addBuilder("NumericRangeFilter", new NumericRangeFilterBuilder());
+
+ queryFactory = new QueryBuilderFactory();
+ queryFactory.addBuilder("TermQuery", new TermQueryBuilder());
+ queryFactory.addBuilder("TermsQuery", new TermsQueryBuilder(analyzer));
+ queryFactory.addBuilder("MatchAllDocsQuery", new MatchAllDocsQueryBuilder());
+ queryFactory.addBuilder("BooleanQuery", new BooleanQueryBuilder(queryFactory));
+ queryFactory.addBuilder("NumericRangeQuery", new NumericRangeQueryBuilder());
+ if (parser != null) {
+ queryFactory.addBuilder("UserQuery", new UserInputQueryBuilder(parser));
+ } else {
+ queryFactory.addBuilder("UserQuery", new UserInputQueryBuilder(defaultField, analyzer));
+ }
+ queryFactory.addBuilder("FilteredQuery", new FilteredQueryBuilder(filterFactory, queryFactory));
+ queryFactory.addBuilder("ConstantScoreQuery", new ConstantScoreQueryBuilder(filterFactory));
+
+ filterFactory.addBuilder("CachedFilter", new CachedFilterBuilder(queryFactory,
+ filterFactory, maxNumCachedFilters));
+
+
+ SpanQueryBuilderFactory sqof = new SpanQueryBuilderFactory();
+
+ SpanNearBuilder snb = new SpanNearBuilder(sqof);
+ sqof.addBuilder("SpanNear", snb);
+ queryFactory.addBuilder("SpanNear", snb);
+
+ BoostingTermBuilder btb = new BoostingTermBuilder();
+ sqof.addBuilder("BoostingTermQuery", btb);
+ queryFactory.addBuilder("BoostingTermQuery", btb);
+
+ SpanTermBuilder snt = new SpanTermBuilder();
+ sqof.addBuilder("SpanTerm", snt);
+ queryFactory.addBuilder("SpanTerm", snt);
+
+ SpanOrBuilder sot = new SpanOrBuilder(sqof);
+ sqof.addBuilder("SpanOr", sot);
+ queryFactory.addBuilder("SpanOr", sot);
+
+ SpanOrTermsBuilder sots = new SpanOrTermsBuilder(analyzer);
+ sqof.addBuilder("SpanOrTerms", sots);
+ queryFactory.addBuilder("SpanOrTerms", sots);
+
+ SpanFirstBuilder sft = new SpanFirstBuilder(sqof);
+ sqof.addBuilder("SpanFirst", sft);
+ queryFactory.addBuilder("SpanFirst", sft);
+
+ SpanNotBuilder snot = new SpanNotBuilder(sqof);
+ sqof.addBuilder("SpanNot", snot);
+ queryFactory.addBuilder("SpanNot", snot);
+ }
+
+ public Query parse(InputStream xmlStream) throws ParserException {
+ return getQuery(parseXML(xmlStream).getDocumentElement());
+ }
+
+ public void addQueryBuilder(String nodeName, QueryBuilder builder) {
+ queryFactory.addBuilder(nodeName, builder);
+ }
+
+ public void addFilterBuilder(String nodeName, FilterBuilder builder) {
+ filterFactory.addBuilder(nodeName, builder);
+ }
+
+ private static Document parseXML(InputStream pXmlFile) throws ParserException {
+ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+ DocumentBuilder db = null;
+ try {
+ db = dbf.newDocumentBuilder();
+ }
+ catch (Exception se) {
+ throw new ParserException("XML Parser configuration error", se);
+ }
+ org.w3c.dom.Document doc = null;
+ try {
+ doc = db.parse(pXmlFile);
+ }
+ catch (Exception se) {
+ throw new ParserException("Error parsing XML stream:" + se, se);
+ }
+ return doc;
+ }
+
- public Query getQuery(Element e) throws ParserException
- {
- return queryFactory.getQuery(e);
+ public Query getQuery(Element e) throws ParserException {
+ return queryFactory.getQuery(e);
}
}
Modified: lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/CorePlusExtensionsParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/CorePlusExtensionsParser.java?rev=1160700&r1=1160699&r2=1160700&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/CorePlusExtensionsParser.java (original)
+++ lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/CorePlusExtensionsParser.java Tue Aug 23 14:06:58 2011
@@ -2,12 +2,7 @@ package org.apache.lucene.xmlparser;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.queryparser.classic.QueryParser;
-import org.apache.lucene.xmlparser.builders.BooleanFilterBuilder;
-import org.apache.lucene.xmlparser.builders.BoostingQueryBuilder;
-import org.apache.lucene.xmlparser.builders.DuplicateFilterBuilder;
-import org.apache.lucene.xmlparser.builders.FuzzyLikeThisQueryBuilder;
-import org.apache.lucene.xmlparser.builders.LikeThisQueryBuilder;
-import org.apache.lucene.xmlparser.builders.TermsFilterBuilder;
+import org.apache.lucene.xmlparser.builders.*;
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
@@ -26,41 +21,40 @@ import org.apache.lucene.xmlparser.build
*/
/**
- *
+ *
*/
-public class CorePlusExtensionsParser extends CoreParser
-{
+public class CorePlusExtensionsParser extends CoreParser {
- /**
- * Construct an XML parser that uses a single instance QueryParser for handling
- * UserQuery tags - all parse operations are synchronized on this parser
- * @param analyzer
- * @param parser A QueryParser which will be synchronized on during parse calls.
- */
- public CorePlusExtensionsParser(Analyzer analyzer, QueryParser parser)
- {
- this(null,analyzer, parser);
- }
- /**
- * Constructs an XML parser that creates a QueryParser for each UserQuery request.
- * @param defaultField The default field name used by QueryParsers constructed for UserQuery tags
- * @param analyzer
- */
- public CorePlusExtensionsParser(String defaultField,Analyzer analyzer)
- {
- this(defaultField,analyzer, null);
- }
+ /**
+ * Construct an XML parser that uses a single instance QueryParser for handling
+ * UserQuery tags - all parse operations are synchronized on this parser
+ *
+ * @param analyzer
+ * @param parser A QueryParser which will be synchronized on during parse calls.
+ */
+ public CorePlusExtensionsParser(Analyzer analyzer, QueryParser parser) {
+ this(null, analyzer, parser);
+ }
+
+ /**
+ * Constructs an XML parser that creates a QueryParser for each UserQuery request.
+ *
+ * @param defaultField The default field name used by QueryParsers constructed for UserQuery tags
+ * @param analyzer
+ */
+ public CorePlusExtensionsParser(String defaultField, Analyzer analyzer) {
+ this(defaultField, analyzer, null);
+ }
- private CorePlusExtensionsParser(String defaultField,Analyzer analyzer, QueryParser parser)
- {
- super(defaultField,analyzer, parser);
- filterFactory.addBuilder("TermsFilter",new TermsFilterBuilder(analyzer));
- filterFactory.addBuilder("BooleanFilter",new BooleanFilterBuilder(filterFactory));
- filterFactory.addBuilder("DuplicateFilter",new DuplicateFilterBuilder());
- String fields[]={"contents"};
- queryFactory.addBuilder("LikeThisQuery",new LikeThisQueryBuilder(analyzer,fields));
- queryFactory.addBuilder("BoostingQuery", new BoostingQueryBuilder(queryFactory));
- queryFactory.addBuilder("FuzzyLikeThisQuery", new FuzzyLikeThisQueryBuilder(analyzer));
+ private CorePlusExtensionsParser(String defaultField, Analyzer analyzer, QueryParser parser) {
+ super(defaultField, analyzer, parser);
+ filterFactory.addBuilder("TermsFilter", new TermsFilterBuilder(analyzer));
+ filterFactory.addBuilder("BooleanFilter", new BooleanFilterBuilder(filterFactory));
+ filterFactory.addBuilder("DuplicateFilter", new DuplicateFilterBuilder());
+ String fields[] = {"contents"};
+ queryFactory.addBuilder("LikeThisQuery", new LikeThisQueryBuilder(analyzer, fields));
+ queryFactory.addBuilder("BoostingQuery", new BoostingQueryBuilder(queryFactory));
+ queryFactory.addBuilder("FuzzyLikeThisQuery", new FuzzyLikeThisQueryBuilder(analyzer));
}
}
Modified: lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/DOMUtils.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/DOMUtils.java?rev=1160700&r1=1160699&r2=1160700&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/DOMUtils.java (original)
+++ lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/DOMUtils.java Tue Aug 23 14:06:58 2011
@@ -1,13 +1,13 @@
package org.apache.lucene.xmlparser;
-import java.io.Reader;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.xml.sax.InputSource;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import java.io.Reader;
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
@@ -26,253 +26,192 @@ import org.xml.sax.InputSource;
*/
/**
- *
+ *
*/
-public class DOMUtils
-{
- public static Element getChildByTagOrFail(Element e, String name) throws ParserException
- {
- Element kid = getChildByTagName(e, name);
- if (null == kid)
- {
- throw new ParserException(e.getTagName() + " missing \"" + name
- + "\" child element");
- }
- return kid;
- }
-
- public static Element getFirstChildOrFail(Element e) throws ParserException
- {
- Element kid = getFirstChildElement(e);
- if (null == kid)
- {
- throw new ParserException(e.getTagName()
- + " does not contain a child element");
- }
- return kid;
- }
-
- public static String getAttributeOrFail(Element e, String name) throws ParserException
- {
- String v = e.getAttribute(name);
- if (null == v)
- {
- throw new ParserException(e.getTagName() + " missing \"" + name
- + "\" attribute");
- }
- return v;
- }
- public static String getAttributeWithInheritanceOrFail(Element e, String name) throws ParserException
- {
- String v = getAttributeWithInheritance(e, name);
- if (null == v)
- {
- throw new ParserException(e.getTagName() + " missing \"" + name
- + "\" attribute");
- }
- return v;
- }
- public static String getNonBlankTextOrFail(Element e) throws ParserException
- {
- String v = getText(e);
- if (null != v)
- v = v.trim();
- if (null == v || 0 == v.length())
- {
- throw new ParserException(e.getTagName() + " has no text");
- }
- return v;
- }
-
-
-
-
-
-
- /* Convenience method where there is only one child Element of a given name */
- public static Element getChildByTagName(Element e, String name)
- {
- for (Node kid = e.getFirstChild(); kid != null; kid = kid.getNextSibling())
- {
- if( (kid.getNodeType()==Node.ELEMENT_NODE) && (name.equals(kid.getNodeName())) )
- {
- return (Element)kid;
- }
- }
- return null;
- }
-
- /**
- * Returns an attribute value from this node, or first parent node with this attribute defined
- * @param element
- * @param attributeName
- * @return A non-zero-length value if defined, otherwise null
- */
- public static String getAttributeWithInheritance(Element element, String attributeName)
- {
- String result=element.getAttribute(attributeName);
- if( (result==null)|| ("".equals(result) ) )
- {
- Node n=element.getParentNode();
- if((n==element)||(n==null))
- {
- return null;
- }
- if(n instanceof Element)
- {
- Element parent=(Element) n;
- return getAttributeWithInheritance(parent,attributeName);
- }
- return null; //we reached the top level of the document without finding attribute
- }
- return result;
- }
-
-
-
- /* Convenience method where there is only one child Element of a given name */
- public static String getChildTextByTagName(Element e, String tagName)
- {
- Element child=getChildByTagName(e,tagName);
- if(child!=null)
- {
- return getText(child);
- }
- return null;
- }
-
- /* Convenience method to append a new child with text*/
- public static Element insertChild(Element parent, String tagName, String text)
- {
- Element child = parent.getOwnerDocument().createElement(tagName);
- parent.appendChild(child);
- if(text!=null)
- {
- child.appendChild(child.getOwnerDocument().createTextNode(text));
- }
- return child;
- }
-
- public static String getAttribute(Element element, String attributeName, String deflt)
- {
- String result=element.getAttribute(attributeName);
- if( (result==null)|| ("".equals(result) ) )
- {
- return deflt;
- }
- return result;
- }
- public static float getAttribute(Element element, String attributeName, float deflt)
- {
- String result=element.getAttribute(attributeName);
- if( (result==null)|| ("".equals(result) ) )
- {
- return deflt;
- }
- return Float.parseFloat(result);
- }
-
- public static int getAttribute(Element element, String attributeName, int deflt)
- {
- String result=element.getAttribute(attributeName);
- if( (result==null)|| ("".equals(result) ) )
- {
- return deflt;
- }
- return Integer.parseInt(result);
- }
-
- public static boolean getAttribute(Element element, String attributeName,
- boolean deflt)
- {
- String result = element.getAttribute(attributeName);
- if ((result == null) || ("".equals(result)))
- {
- return deflt;
- }
- return Boolean.valueOf(result).booleanValue();
- }
-
- /* Returns text of node and all child nodes - without markup */
- //MH changed to Node from Element 25/11/2005
- public static String getText(Node e)
- {
- StringBuilder sb=new StringBuilder();
- getTextBuffer(e, sb);
- return sb.toString();
- }
-
- public static Element getFirstChildElement(Element element)
- {
- for (Node kid = element.getFirstChild(); kid != null; kid = kid
- .getNextSibling())
- {
- if (kid.getNodeType() == Node.ELEMENT_NODE)
- {
- return (Element) kid;
- }
- }
- return null;
- }
+public class DOMUtils {
- private static void getTextBuffer(Node e, StringBuilder sb)
- {
- for (Node kid = e.getFirstChild(); kid != null; kid = kid.getNextSibling())
- {
- switch(kid.getNodeType())
- {
- case Node.TEXT_NODE:
- {
- sb.append(kid.getNodeValue());
- break;
- }
- case Node.ELEMENT_NODE:
- {
- getTextBuffer(kid, sb);
- break;
- }
- case Node.ENTITY_REFERENCE_NODE:
- {
- getTextBuffer(kid, sb);
- break;
- }
- }
- }
- }
-
- /**
- * Helper method to parse an XML file into a DOM tree, given a reader.
- * @param is reader of the XML file to be parsed
- * @return an org.w3c.dom.Document object
- */
- public static Document loadXML(Reader is)
- {
-
- DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
- DocumentBuilder db = null;
-
- try
- {
- db = dbf.newDocumentBuilder();
- }
- catch (Exception se)
- {
- throw new RuntimeException("Parser configuration error", se);
- }
-
- // Step 3: parse the input file
- org.w3c.dom.Document doc = null;
- try
- {
- doc = db.parse(new InputSource(is));
- //doc = db.parse(is);
- }
- catch (Exception se)
- {
- throw new RuntimeException("Error parsing file:" + se, se);
- }
+ public static Element getChildByTagOrFail(Element e, String name) throws ParserException {
+ Element kid = getChildByTagName(e, name);
+ if (null == kid) {
+ throw new ParserException(e.getTagName() + " missing \"" + name
+ + "\" child element");
+ }
+ return kid;
+ }
+
+ public static Element getFirstChildOrFail(Element e) throws ParserException {
+ Element kid = getFirstChildElement(e);
+ if (null == kid) {
+ throw new ParserException(e.getTagName()
+ + " does not contain a child element");
+ }
+ return kid;
+ }
+
+ public static String getAttributeOrFail(Element e, String name) throws ParserException {
+ String v = e.getAttribute(name);
+ if (null == v) {
+ throw new ParserException(e.getTagName() + " missing \"" + name
+ + "\" attribute");
+ }
+ return v;
+ }
+
+ public static String getAttributeWithInheritanceOrFail(Element e, String name) throws ParserException {
+ String v = getAttributeWithInheritance(e, name);
+ if (null == v) {
+ throw new ParserException(e.getTagName() + " missing \"" + name
+ + "\" attribute");
+ }
+ return v;
+ }
+
+ public static String getNonBlankTextOrFail(Element e) throws ParserException {
+ String v = getText(e);
+ if (null != v)
+ v = v.trim();
+ if (null == v || 0 == v.length()) {
+ throw new ParserException(e.getTagName() + " has no text");
+ }
+ return v;
+ }
+
+ /* Convenience method where there is only one child Element of a given name */
+ public static Element getChildByTagName(Element e, String name) {
+ for (Node kid = e.getFirstChild(); kid != null; kid = kid.getNextSibling()) {
+ if ((kid.getNodeType() == Node.ELEMENT_NODE) && (name.equals(kid.getNodeName()))) {
+ return (Element) kid;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns an attribute value from this node, or first parent node with this attribute defined
+ *
+ * @param element
+ * @param attributeName
+ * @return A non-zero-length value if defined, otherwise null
+ */
+ public static String getAttributeWithInheritance(Element element, String attributeName) {
+ String result = element.getAttribute(attributeName);
+ if ((result == null) || ("".equals(result))) {
+ Node n = element.getParentNode();
+ if ((n == element) || (n == null)) {
+ return null;
+ }
+ if (n instanceof Element) {
+ Element parent = (Element) n;
+ return getAttributeWithInheritance(parent, attributeName);
+ }
+ return null; //we reached the top level of the document without finding attribute
+ }
+ return result;
+ }
+
+
+ /* Convenience method where there is only one child Element of a given name */
+ public static String getChildTextByTagName(Element e, String tagName) {
+ Element child = getChildByTagName(e, tagName);
+ return child != null ? getText(child) : null;
+ }
+
+ /* Convenience method to append a new child with text*/
+ public static Element insertChild(Element parent, String tagName, String text) {
+ Element child = parent.getOwnerDocument().createElement(tagName);
+ parent.appendChild(child);
+ if (text != null) {
+ child.appendChild(child.getOwnerDocument().createTextNode(text));
+ }
+ return child;
+ }
+
+ public static String getAttribute(Element element, String attributeName, String deflt) {
+ String result = element.getAttribute(attributeName);
+ return (result == null) || ("".equals(result)) ? deflt : result;
+ }
+
+ public static float getAttribute(Element element, String attributeName, float deflt) {
+ String result = element.getAttribute(attributeName);
+ return (result == null) || ("".equals(result)) ? deflt : Float.parseFloat(result);
+ }
+
+ public static int getAttribute(Element element, String attributeName, int deflt) {
+ String result = element.getAttribute(attributeName);
+ return (result == null) || ("".equals(result)) ? deflt : Integer.parseInt(result);
+ }
+
+ public static boolean getAttribute(Element element, String attributeName,
+ boolean deflt) {
+ String result = element.getAttribute(attributeName);
+ return (result == null) || ("".equals(result)) ? deflt : Boolean.valueOf(result);
+ }
+
+ /* Returns text of node and all child nodes - without markup */
+ //MH changed to Node from Element 25/11/2005
+
+ public static String getText(Node e) {
+ StringBuilder sb = new StringBuilder();
+ getTextBuffer(e, sb);
+ return sb.toString();
+ }
+
+ public static Element getFirstChildElement(Element element) {
+ for (Node kid = element.getFirstChild(); kid != null; kid = kid.getNextSibling()) {
+ if (kid.getNodeType() == Node.ELEMENT_NODE) {
+ return (Element) kid;
+ }
+ }
+ return null;
+ }
+
+ private static void getTextBuffer(Node e, StringBuilder sb) {
+ for (Node kid = e.getFirstChild(); kid != null; kid = kid.getNextSibling()) {
+ switch (kid.getNodeType()) {
+ case Node.TEXT_NODE: {
+ sb.append(kid.getNodeValue());
+ break;
+ }
+ case Node.ELEMENT_NODE: {
+ getTextBuffer(kid, sb);
+ break;
+ }
+ case Node.ENTITY_REFERENCE_NODE: {
+ getTextBuffer(kid, sb);
+ break;
+ }
+ }
+ }
+ }
+
+ /**
+ * Helper method to parse an XML file into a DOM tree, given a reader.
+ *
+ * @param is reader of the XML file to be parsed
+ * @return an org.w3c.dom.Document object
+ */
+ public static Document loadXML(Reader is) {
+ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+ DocumentBuilder db = null;
+
+ try {
+ db = dbf.newDocumentBuilder();
+ }
+ catch (Exception se) {
+ throw new RuntimeException("Parser configuration error", se);
+ }
+
+ // Step 3: parse the input file
+ org.w3c.dom.Document doc = null;
+ try {
+ doc = db.parse(new InputSource(is));
+ //doc = db.parse(is);
+ }
+ catch (Exception se) {
+ throw new RuntimeException("Error parsing file:" + se, se);
+ }
- return doc;
+ return doc;
}
}
Modified: lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/FilterBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/FilterBuilder.java?rev=1160700&r1=1160699&r2=1160700&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/FilterBuilder.java (original)
+++ lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/FilterBuilder.java Tue Aug 23 14:06:58 2011
@@ -26,5 +26,6 @@ import org.w3c.dom.Element;
*
*/
public interface FilterBuilder {
+
public Filter getFilter(Element e) throws ParserException;
}
Modified: lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/FilterBuilderFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/FilterBuilderFactory.java?rev=1160700&r1=1160699&r2=1160700&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/FilterBuilderFactory.java (original)
+++ lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/FilterBuilderFactory.java Tue Aug 23 14:06:58 2011
@@ -3,10 +3,10 @@
*/
package org.apache.lucene.xmlparser;
-import java.util.HashMap;
-
import org.apache.lucene.search.Filter;
import org.w3c.dom.Element;
+
+import java.util.HashMap;
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
@@ -25,26 +25,25 @@ import org.w3c.dom.Element;
*/
/**
- *
+ *
*/
public class FilterBuilderFactory implements FilterBuilder {
- HashMap<String,FilterBuilder> builders=new HashMap<String,FilterBuilder>();
-
- public Filter getFilter(Element n) throws ParserException {
- FilterBuilder builder= builders.get(n.getNodeName());
- if(builder==null)
- {
- throw new ParserException("No FilterBuilder defined for node "+n.getNodeName());
- }
- return builder.getFilter(n);
- }
- public void addBuilder(String nodeName,FilterBuilder builder)
- {
- builders.put(nodeName,builder);
- }
- public FilterBuilder getFilterBuilder(String nodeName)
- {
- return builders.get(nodeName);
- }
+ HashMap<String, FilterBuilder> builders = new HashMap<String, FilterBuilder>();
+
+ public Filter getFilter(Element n) throws ParserException {
+ FilterBuilder builder = builders.get(n.getNodeName());
+ if (builder == null) {
+ throw new ParserException("No FilterBuilder defined for node " + n.getNodeName());
+ }
+ return builder.getFilter(n);
+ }
+
+ public void addBuilder(String nodeName, FilterBuilder builder) {
+ builders.put(nodeName, builder);
+ }
+
+ public FilterBuilder getFilterBuilder(String nodeName) {
+ return builders.get(nodeName);
+ }
}
Modified: lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/ParserException.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/ParserException.java?rev=1160700&r1=1160699&r2=1160700&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/ParserException.java (original)
+++ lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/ParserException.java Tue Aug 23 14:06:58 2011
@@ -30,12 +30,14 @@ public class ParserException extends Exc
public ParserException() {
super();
}
+
/**
* @param message
*/
public ParserException(String message) {
super(message);
}
+
/**
* @param message
* @param cause
@@ -43,6 +45,7 @@ public class ParserException extends Exc
public ParserException(String message, Throwable cause) {
super(message, cause);
}
+
/**
* @param cause
*/
Modified: lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/QueryBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/QueryBuilder.java?rev=1160700&r1=1160699&r2=1160700&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/QueryBuilder.java (original)
+++ lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/QueryBuilder.java Tue Aug 23 14:06:58 2011
@@ -25,5 +25,4 @@ import org.w3c.dom.Element;
public interface QueryBuilder {
public Query getQuery(Element e) throws ParserException;
-
}
Modified: lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/QueryBuilderFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/QueryBuilderFactory.java?rev=1160700&r1=1160699&r2=1160700&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/QueryBuilderFactory.java (original)
+++ lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/QueryBuilderFactory.java Tue Aug 23 14:06:58 2011
@@ -3,10 +3,10 @@
*/
package org.apache.lucene.xmlparser;
-import java.util.HashMap;
-
import org.apache.lucene.search.Query;
import org.w3c.dom.Element;
+
+import java.util.HashMap;
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
@@ -25,27 +25,26 @@ import org.w3c.dom.Element;
*/
/**
- *
+ *
*/
public class QueryBuilderFactory implements QueryBuilder {
- HashMap<String,QueryBuilder> builders=new HashMap<String,QueryBuilder>();
-
- public Query getQuery(Element n) throws ParserException {
- QueryBuilder builder= builders.get(n.getNodeName());
- if(builder==null)
- {
- throw new ParserException("No QueryObjectBuilder defined for node "+n.getNodeName());
- }
- return builder.getQuery(n);
- }
- public void addBuilder(String nodeName,QueryBuilder builder)
- {
- builders.put(nodeName,builder);
- }
- public QueryBuilder getQueryBuilder(String nodeName)
- {
- return builders.get(nodeName);
- }
-
+ HashMap<String, QueryBuilder> builders = new HashMap<String, QueryBuilder>();
+
+ public Query getQuery(Element n) throws ParserException {
+ QueryBuilder builder = builders.get(n.getNodeName());
+ if (builder == null) {
+ throw new ParserException("No QueryObjectBuilder defined for node " + n.getNodeName());
+ }
+ return builder.getQuery(n);
+ }
+
+ public void addBuilder(String nodeName, QueryBuilder builder) {
+ builders.put(nodeName, builder);
+ }
+
+ public QueryBuilder getQueryBuilder(String nodeName) {
+ return builders.get(nodeName);
+ }
+
}
Modified: lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/QueryTemplateManager.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/QueryTemplateManager.java?rev=1160700&r1=1160699&r2=1160700&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/QueryTemplateManager.java (original)
+++ lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/QueryTemplateManager.java Tue Aug 23 14:06:58 2011
@@ -1,28 +1,22 @@
package org.apache.lucene.xmlparser;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Properties;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.xml.sax.SAXException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.transform.Result;
-import javax.xml.transform.Templates;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerConfigurationException;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.*;
import javax.xml.transform.dom.DOMResult;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
-
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.xml.sax.SAXException;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Properties;
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
@@ -40,171 +34,168 @@ import org.xml.sax.SAXException;
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
/**
- * Provides utilities for turning query form input (such as from a web page or Swing gui) into
- * Lucene XML queries by using XSL templates. This approach offers a convenient way of externalizing
- * and changing how user input is turned into Lucene queries.
+ * Provides utilities for turning query form input (such as from a web page or Swing gui) into
+ * Lucene XML queries by using XSL templates. This approach offers a convenient way of externalizing
+ * and changing how user input is turned into Lucene queries.
* Database applications often adopt similar practices by externalizing SQL in template files that can
- * be easily changed/optimized by a DBA.
- * The static methods can be used on their own or by creating an instance of this class you can store and
+ * be easily changed/optimized by a DBA.
+ * The static methods can be used on their own or by creating an instance of this class you can store and
* re-use compiled stylesheets for fast use (e.g. in a server environment)
*/
-public class QueryTemplateManager
-{
- static DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance ();
- static TransformerFactory tFactory = TransformerFactory.newInstance();
-
- HashMap<String,Templates> compiledTemplatesCache=new HashMap<String,Templates>();
- Templates defaultCompiledTemplates=null;
-
-
- public QueryTemplateManager()
- {
-
- }
- public QueryTemplateManager(InputStream xslIs) throws TransformerConfigurationException, ParserConfigurationException, SAXException, IOException
- {
- addDefaultQueryTemplate(xslIs);
- }
- public void addDefaultQueryTemplate(InputStream xslIs) throws TransformerConfigurationException, ParserConfigurationException, SAXException, IOException
- {
- defaultCompiledTemplates=getTemplates(xslIs);
- }
- public void addQueryTemplate(String name, InputStream xslIs) throws TransformerConfigurationException, ParserConfigurationException, SAXException, IOException
- {
- compiledTemplatesCache.put(name,getTemplates(xslIs));
- }
- public String getQueryAsXmlString(Properties formProperties,String queryTemplateName) throws SAXException, IOException, ParserConfigurationException, TransformerException
- {
- Templates ts= compiledTemplatesCache.get(queryTemplateName);
- return getQueryAsXmlString(formProperties, ts);
- }
-
- public Document getQueryAsDOM(Properties formProperties,String queryTemplateName) throws SAXException, IOException, ParserConfigurationException, TransformerException
- {
- Templates ts= compiledTemplatesCache.get(queryTemplateName);
- return getQueryAsDOM(formProperties, ts);
- }
- public String getQueryAsXmlString(Properties formProperties) throws SAXException, IOException, ParserConfigurationException, TransformerException
- {
- return getQueryAsXmlString(formProperties, defaultCompiledTemplates);
- }
-
- public Document getQueryAsDOM(Properties formProperties) throws SAXException, IOException, ParserConfigurationException, TransformerException
- {
- return getQueryAsDOM(formProperties, defaultCompiledTemplates);
- }
-
-
- /**
- * Fast means of constructing query using a precompiled stylesheet
- */
- public static String getQueryAsXmlString(Properties formProperties, Templates template) throws SAXException, IOException, ParserConfigurationException, TransformerException
- {
- ByteArrayOutputStream baos=new ByteArrayOutputStream();
- StreamResult result=new StreamResult(baos);
- transformCriteria(formProperties,template,result);
- return baos.toString();
- }
-
- /**
- * Slow means of constructing query parsing a stylesheet from an input stream
- */
- public static String getQueryAsXmlString(Properties formProperties, InputStream xslIs) throws SAXException, IOException, ParserConfigurationException, TransformerException
- {
- ByteArrayOutputStream baos=new ByteArrayOutputStream();
- StreamResult result=new StreamResult(baos);
- transformCriteria(formProperties,xslIs,result);
- return baos.toString();
- }
-
-
- /**
- * Fast means of constructing query using a cached,precompiled stylesheet
- */
- public static Document getQueryAsDOM(Properties formProperties, Templates template) throws SAXException, IOException, ParserConfigurationException, TransformerException
- {
- DOMResult result=new DOMResult();
- transformCriteria(formProperties,template,result);
- return (Document)result.getNode();
- }
-
-
- /**
- * Slow means of constructing query - parses stylesheet from input stream
- */
- public static Document getQueryAsDOM(Properties formProperties, InputStream xslIs) throws SAXException, IOException, ParserConfigurationException, TransformerException
- {
- DOMResult result=new DOMResult();
- transformCriteria(formProperties,xslIs,result);
- return (Document)result.getNode();
- }
-
-
-
-
- /**
- * Slower transformation using an uncompiled stylesheet (suitable for development environment)
- */
- public static void transformCriteria(Properties formProperties, InputStream xslIs, Result result) throws SAXException, IOException, ParserConfigurationException, TransformerException
- {
- dbf.setNamespaceAware(true);
- DocumentBuilder builder = dbf.newDocumentBuilder();
- org.w3c.dom.Document xslDoc = builder.parse(xslIs);
- DOMSource ds = new DOMSource(xslDoc);
-
- Transformer transformer =null;
- synchronized (tFactory)
- {
- transformer = tFactory.newTransformer(ds);
- }
- transformCriteria(formProperties,transformer,result);
- }
-
- /**
- * Fast transformation using a pre-compiled stylesheet (suitable for production environments)
- */
- public static void transformCriteria(Properties formProperties, Templates template, Result result) throws SAXException, IOException, ParserConfigurationException, TransformerException
- {
- transformCriteria(formProperties,template.newTransformer(),result);
- }
-
-
-
- public static void transformCriteria(Properties formProperties, Transformer transformer, Result result) throws SAXException, IOException, ParserConfigurationException, TransformerException
- {
- dbf.setNamespaceAware(true);
-
- //Create an XML document representing the search index document.
- DocumentBuilder db = dbf.newDocumentBuilder ();
- org.w3c.dom.Document doc = db.newDocument ();
- Element root = doc.createElement ("Document");
- doc.appendChild (root);
-
- Enumeration keysEnum = formProperties.keys();
- while(keysEnum.hasMoreElements())
- {
- String propName=(String) keysEnum.nextElement();
- String value=formProperties.getProperty(propName);
- if((value!=null)&&(value.length()>0))
- {
- DOMUtils.insertChild(root,propName,value);
- }
- }
- //Use XSLT to to transform into an XML query string using the queryTemplate
- DOMSource xml=new DOMSource(doc);
- transformer.transform(xml,result);
- }
-
- /**
- * Parses a query stylesheet for repeated use
- */
- public static Templates getTemplates(InputStream xslIs) throws ParserConfigurationException, SAXException, IOException, TransformerConfigurationException
- {
- dbf.setNamespaceAware(true);
- DocumentBuilder builder = dbf.newDocumentBuilder();
- org.w3c.dom.Document xslDoc = builder.parse(xslIs);
- DOMSource ds = new DOMSource(xslDoc);
- return tFactory.newTemplates(ds);
+public class QueryTemplateManager {
+ static final DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+ static final TransformerFactory tFactory = TransformerFactory.newInstance();
+
+ HashMap<String, Templates> compiledTemplatesCache = new HashMap<String, Templates>();
+ Templates defaultCompiledTemplates = null;
+
+
+ public QueryTemplateManager() {
+
+ }
+
+ public QueryTemplateManager(InputStream xslIs)
+ throws TransformerConfigurationException, ParserConfigurationException, SAXException, IOException {
+ addDefaultQueryTemplate(xslIs);
+ }
+
+ public void addDefaultQueryTemplate(InputStream xslIs)
+ throws TransformerConfigurationException, ParserConfigurationException, SAXException, IOException {
+ defaultCompiledTemplates = getTemplates(xslIs);
+ }
+
+ public void addQueryTemplate(String name, InputStream xslIs)
+ throws TransformerConfigurationException, ParserConfigurationException, SAXException, IOException {
+ compiledTemplatesCache.put(name, getTemplates(xslIs));
+ }
+
+ public String getQueryAsXmlString(Properties formProperties, String queryTemplateName)
+ throws SAXException, IOException, ParserConfigurationException, TransformerException {
+ Templates ts = compiledTemplatesCache.get(queryTemplateName);
+ return getQueryAsXmlString(formProperties, ts);
+ }
+
+ public Document getQueryAsDOM(Properties formProperties, String queryTemplateName)
+ throws SAXException, IOException, ParserConfigurationException, TransformerException {
+ Templates ts = compiledTemplatesCache.get(queryTemplateName);
+ return getQueryAsDOM(formProperties, ts);
+ }
+
+ public String getQueryAsXmlString(Properties formProperties)
+ throws SAXException, IOException, ParserConfigurationException, TransformerException {
+ return getQueryAsXmlString(formProperties, defaultCompiledTemplates);
+ }
+
+ public Document getQueryAsDOM(Properties formProperties)
+ throws SAXException, IOException, ParserConfigurationException, TransformerException {
+ return getQueryAsDOM(formProperties, defaultCompiledTemplates);
+ }
+
+ /**
+ * Fast means of constructing query using a precompiled stylesheet
+ */
+ public static String getQueryAsXmlString(Properties formProperties, Templates template)
+ throws SAXException, IOException, ParserConfigurationException, TransformerException {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ StreamResult result = new StreamResult(baos);
+ transformCriteria(formProperties, template, result);
+ return baos.toString();
+ }
+
+ /**
+ * Slow means of constructing query parsing a stylesheet from an input stream
+ */
+ public static String getQueryAsXmlString(Properties formProperties, InputStream xslIs)
+ throws SAXException, IOException, ParserConfigurationException, TransformerException {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ StreamResult result = new StreamResult(baos);
+ transformCriteria(formProperties, xslIs, result);
+ return baos.toString();
+ }
+
+
+ /**
+ * Fast means of constructing query using a cached,precompiled stylesheet
+ */
+ public static Document getQueryAsDOM(Properties formProperties, Templates template)
+ throws SAXException, IOException, ParserConfigurationException, TransformerException {
+ DOMResult result = new DOMResult();
+ transformCriteria(formProperties, template, result);
+ return (Document) result.getNode();
+ }
+
+
+ /**
+ * Slow means of constructing query - parses stylesheet from input stream
+ */
+ public static Document getQueryAsDOM(Properties formProperties, InputStream xslIs)
+ throws SAXException, IOException, ParserConfigurationException, TransformerException {
+ DOMResult result = new DOMResult();
+ transformCriteria(formProperties, xslIs, result);
+ return (Document) result.getNode();
+ }
+
+
+ /**
+ * Slower transformation using an uncompiled stylesheet (suitable for development environment)
+ */
+ public static void transformCriteria(Properties formProperties, InputStream xslIs, Result result)
+ throws SAXException, IOException, ParserConfigurationException, TransformerException {
+ dbf.setNamespaceAware(true);
+ DocumentBuilder builder = dbf.newDocumentBuilder();
+ org.w3c.dom.Document xslDoc = builder.parse(xslIs);
+ DOMSource ds = new DOMSource(xslDoc);
+
+ Transformer transformer = null;
+ synchronized (tFactory) {
+ transformer = tFactory.newTransformer(ds);
+ }
+ transformCriteria(formProperties, transformer, result);
+ }
+
+ /**
+ * Fast transformation using a pre-compiled stylesheet (suitable for production environments)
+ */
+ public static void transformCriteria(Properties formProperties, Templates template, Result result)
+ throws SAXException, IOException, ParserConfigurationException, TransformerException {
+ transformCriteria(formProperties, template.newTransformer(), result);
+ }
+
+
+ public static void transformCriteria(Properties formProperties, Transformer transformer, Result result)
+ throws SAXException, IOException, ParserConfigurationException, TransformerException {
+ dbf.setNamespaceAware(true);
+
+ //Create an XML document representing the search index document.
+ DocumentBuilder db = dbf.newDocumentBuilder();
+ org.w3c.dom.Document doc = db.newDocument();
+ Element root = doc.createElement("Document");
+ doc.appendChild(root);
+
+ Enumeration keysEnum = formProperties.keys();
+ while (keysEnum.hasMoreElements()) {
+ String propName = (String) keysEnum.nextElement();
+ String value = formProperties.getProperty(propName);
+ if ((value != null) && (value.length() > 0)) {
+ DOMUtils.insertChild(root, propName, value);
+ }
+ }
+ //Use XSLT to to transform into an XML query string using the queryTemplate
+ DOMSource xml = new DOMSource(doc);
+ transformer.transform(xml, result);
+ }
+
+ /**
+ * Parses a query stylesheet for repeated use
+ */
+ public static Templates getTemplates(InputStream xslIs)
+ throws ParserConfigurationException, SAXException, IOException, TransformerConfigurationException {
+ dbf.setNamespaceAware(true);
+ DocumentBuilder builder = dbf.newDocumentBuilder();
+ org.w3c.dom.Document xslDoc = builder.parse(xslIs);
+ DOMSource ds = new DOMSource(xslDoc);
+ return tFactory.newTemplates(ds);
}
}
Modified: lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/BooleanFilterBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/BooleanFilterBuilder.java?rev=1160700&r1=1160699&r2=1160700&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/BooleanFilterBuilder.java (original)
+++ lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/BooleanFilterBuilder.java Tue Aug 23 14:06:58 2011
@@ -4,9 +4,9 @@
package org.apache.lucene.xmlparser.builders;
import org.apache.lucene.search.BooleanClause;
-import org.apache.lucene.search.BooleanFilter;
+import org.apache.lucene.queries.BooleanFilter;
import org.apache.lucene.search.Filter;
-import org.apache.lucene.search.FilterClause;
+import org.apache.lucene.queries.FilterClause;
import org.apache.lucene.xmlparser.DOMUtils;
import org.apache.lucene.xmlparser.FilterBuilder;
import org.apache.lucene.xmlparser.ParserException;
@@ -32,36 +32,33 @@ import org.w3c.dom.NodeList;
*/
/**
- *
+ *
*/
public class BooleanFilterBuilder implements FilterBuilder {
-
- private FilterBuilder factory;
- public BooleanFilterBuilder(FilterBuilder factory)
- {
- this.factory=factory;
- }
-
- public Filter getFilter(Element e) throws ParserException {
- BooleanFilter bf=new BooleanFilter();
- NodeList nl = e.getChildNodes();
-
- for(int i=0;i<nl.getLength();i++)
- {
- Node node = nl.item(i);
- if(node.getNodeName().equals("Clause"))
- {
- Element clauseElem=(Element) node;
- BooleanClause.Occur occurs=BooleanQueryBuilder.getOccursValue(clauseElem);
-
- Element clauseFilter=DOMUtils.getFirstChildOrFail(clauseElem);
- Filter f=factory.getFilter(clauseFilter);
- bf.add(new FilterClause(f,occurs));
- }
- }
-
- return bf;
- }
+ private final FilterBuilder factory;
+
+ public BooleanFilterBuilder(FilterBuilder factory) {
+ this.factory = factory;
+ }
+
+ public Filter getFilter(Element e) throws ParserException {
+ BooleanFilter bf = new BooleanFilter();
+ NodeList nl = e.getChildNodes();
+
+ for (int i = 0; i < nl.getLength(); i++) {
+ Node node = nl.item(i);
+ if (node.getNodeName().equals("Clause")) {
+ Element clauseElem = (Element) node;
+ BooleanClause.Occur occurs = BooleanQueryBuilder.getOccursValue(clauseElem);
+
+ Element clauseFilter = DOMUtils.getFirstChildOrFail(clauseElem);
+ Filter f = factory.getFilter(clauseFilter);
+ bf.add(new FilterClause(f, occurs));
+ }
+ }
+
+ return bf;
+ }
}
Modified: lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/BooleanQueryBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/BooleanQueryBuilder.java?rev=1160700&r1=1160699&r2=1160700&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/BooleanQueryBuilder.java (original)
+++ lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/BooleanQueryBuilder.java Tue Aug 23 14:06:58 2011
@@ -30,73 +30,61 @@ import org.w3c.dom.NodeList;
*/
/**
- *
+ *
*/
public class BooleanQueryBuilder implements QueryBuilder {
-
- private QueryBuilder factory;
- public BooleanQueryBuilder(QueryBuilder factory)
- {
- this.factory=factory;
- }
-
- /* (non-Javadoc)
- * @see org.apache.lucene.xmlparser.QueryObjectBuilder#process(org.w3c.dom.Element)
- */
- public Query getQuery(Element e) throws ParserException {
- BooleanQuery bq=new BooleanQuery(DOMUtils.getAttribute(e,"disableCoord",false));
- bq.setMinimumNumberShouldMatch(DOMUtils.getAttribute(e,"minimumNumberShouldMatch",0));
- bq.setBoost(DOMUtils.getAttribute(e,"boost",1.0f));
-
- NodeList nl = e.getChildNodes();
- for(int i=0;i<nl.getLength();i++)
- {
- Node node = nl.item(i);
- if(node.getNodeName().equals("Clause"))
- {
- Element clauseElem=(Element) node;
- BooleanClause.Occur occurs=getOccursValue(clauseElem);
-
- Element clauseQuery=DOMUtils.getFirstChildOrFail(clauseElem);
- Query q=factory.getQuery(clauseQuery);
- bq.add(new BooleanClause(q,occurs));
- }
- }
-
- return bq;
- }
- static BooleanClause.Occur getOccursValue(Element clauseElem) throws ParserException
- {
- String occs=clauseElem.getAttribute("occurs");
- BooleanClause.Occur occurs=BooleanClause.Occur.SHOULD;
- if("must".equalsIgnoreCase(occs))
- {
- occurs=BooleanClause.Occur.MUST;
- }
- else
- {
- if("mustNot".equalsIgnoreCase(occs))
- {
- occurs=BooleanClause.Occur.MUST_NOT;
- }
- else
- {
- if(("should".equalsIgnoreCase(occs))||("".equals(occs)))
- {
- occurs=BooleanClause.Occur.SHOULD;
- }
- else
- {
- if(occs!=null)
- {
- throw new ParserException("Invalid value for \"occurs\" attribute of clause:"+occs);
- }
- }
- }
- }
- return occurs;
-
- }
+ private final QueryBuilder factory;
+
+ public BooleanQueryBuilder(QueryBuilder factory) {
+ this.factory = factory;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.lucene.xmlparser.QueryObjectBuilder#process(org.w3c.dom.Element)
+ */
+
+ public Query getQuery(Element e) throws ParserException {
+ BooleanQuery bq = new BooleanQuery(DOMUtils.getAttribute(e, "disableCoord", false));
+ bq.setMinimumNumberShouldMatch(DOMUtils.getAttribute(e, "minimumNumberShouldMatch", 0));
+ bq.setBoost(DOMUtils.getAttribute(e, "boost", 1.0f));
+
+ NodeList nl = e.getChildNodes();
+ for (int i = 0; i < nl.getLength(); i++) {
+ Node node = nl.item(i);
+ if (node.getNodeName().equals("Clause")) {
+ Element clauseElem = (Element) node;
+ BooleanClause.Occur occurs = getOccursValue(clauseElem);
+
+ Element clauseQuery = DOMUtils.getFirstChildOrFail(clauseElem);
+ Query q = factory.getQuery(clauseQuery);
+ bq.add(new BooleanClause(q, occurs));
+ }
+ }
+
+ return bq;
+ }
+
+ static BooleanClause.Occur getOccursValue(Element clauseElem) throws ParserException {
+ String occs = clauseElem.getAttribute("occurs");
+ BooleanClause.Occur occurs = BooleanClause.Occur.SHOULD;
+ if ("must".equalsIgnoreCase(occs)) {
+ occurs = BooleanClause.Occur.MUST;
+ } else {
+ if ("mustNot".equalsIgnoreCase(occs)) {
+ occurs = BooleanClause.Occur.MUST_NOT;
+ } else {
+ if (("should".equalsIgnoreCase(occs)) || ("".equals(occs))) {
+ occurs = BooleanClause.Occur.SHOULD;
+ } else {
+ if (occs != null) {
+ throw new ParserException("Invalid value for \"occurs\" attribute of clause:" + occs);
+ }
+ }
+ }
+ }
+ return occurs;
+
+ }
}
Modified: lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/BoostingQueryBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/BoostingQueryBuilder.java?rev=1160700&r1=1160699&r2=1160700&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/BoostingQueryBuilder.java (original)
+++ lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/BoostingQueryBuilder.java Tue Aug 23 14:06:58 2011
@@ -1,6 +1,6 @@
package org.apache.lucene.xmlparser.builders;
-import org.apache.lucene.search.BoostingQuery;
+import org.apache.lucene.queries.BoostingQuery;
import org.apache.lucene.search.Query;
import org.apache.lucene.xmlparser.DOMUtils;
import org.apache.lucene.xmlparser.ParserException;
@@ -24,37 +24,32 @@ import org.w3c.dom.Element;
*/
/**
- *
+ *
*/
-public class BoostingQueryBuilder implements QueryBuilder
-{
-
- private QueryBuilder factory;
- float defaultBoost=0.01f;
-
- public BoostingQueryBuilder (QueryBuilder factory)
- {
- this.factory=factory;
- }
-
- public Query getQuery(Element e) throws ParserException
- {
-
- Element mainQueryElem=DOMUtils.getChildByTagOrFail(e,"Query");
- mainQueryElem=DOMUtils.getFirstChildOrFail(mainQueryElem);
- Query mainQuery=factory.getQuery(mainQueryElem);
-
- Element boostQueryElem=DOMUtils.getChildByTagOrFail(e,"BoostQuery");
- float boost=DOMUtils.getAttribute(boostQueryElem,"boost",defaultBoost);
- boostQueryElem=DOMUtils.getFirstChildOrFail(boostQueryElem);
- Query boostQuery=factory.getQuery(boostQueryElem);
-
- BoostingQuery bq = new BoostingQuery(mainQuery,boostQuery,boost);
+public class BoostingQueryBuilder implements QueryBuilder {
+
+ private static float DEFAULT_BOOST = 0.01f;
+
+ private final QueryBuilder factory;
+
+ public BoostingQueryBuilder(QueryBuilder factory) {
+ this.factory = factory;
+ }
+
+ public Query getQuery(Element e) throws ParserException {
+ Element mainQueryElem = DOMUtils.getChildByTagOrFail(e, "Query");
+ mainQueryElem = DOMUtils.getFirstChildOrFail(mainQueryElem);
+ Query mainQuery = factory.getQuery(mainQueryElem);
- bq.setBoost(DOMUtils.getAttribute(e,"boost",1.0f));
- return bq;
+ Element boostQueryElem = DOMUtils.getChildByTagOrFail(e, "BoostQuery");
+ float boost = DOMUtils.getAttribute(boostQueryElem, "boost", DEFAULT_BOOST);
+ boostQueryElem = DOMUtils.getFirstChildOrFail(boostQueryElem);
+ Query boostQuery = factory.getQuery(boostQueryElem);
- }
+ BoostingQuery bq = new BoostingQuery(mainQuery, boostQuery, boost);
+ bq.setBoost(DOMUtils.getAttribute(e, "boost", 1.0f));
+ return bq;
+ }
}
Modified: lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/BoostingTermBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/BoostingTermBuilder.java?rev=1160700&r1=1160699&r2=1160700&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/BoostingTermBuilder.java (original)
+++ lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/BoostingTermBuilder.java Tue Aug 23 14:06:58 2011
@@ -1,9 +1,9 @@
package org.apache.lucene.xmlparser.builders;
import org.apache.lucene.index.Term;
-import org.apache.lucene.search.spans.SpanQuery;
-import org.apache.lucene.search.payloads.PayloadTermQuery;
import org.apache.lucene.search.payloads.AveragePayloadFunction;
+import org.apache.lucene.search.payloads.PayloadTermQuery;
+import org.apache.lucene.search.spans.SpanQuery;
import org.apache.lucene.xmlparser.DOMUtils;
import org.apache.lucene.xmlparser.ParserException;
import org.w3c.dom.Element;
@@ -26,20 +26,17 @@ import org.w3c.dom.Element;
*/
/**
- *
+ *
*/
-public class BoostingTermBuilder extends SpanBuilderBase
-{
-
- public SpanQuery getSpanQuery(Element e) throws ParserException
- {
- String fieldName=DOMUtils.getAttributeWithInheritanceOrFail(e,"fieldName");
- String value=DOMUtils.getNonBlankTextOrFail(e);
- PayloadTermQuery btq = new PayloadTermQuery(new Term(fieldName,value), new AveragePayloadFunction());
-
- btq.setBoost(DOMUtils.getAttribute(e,"boost",1.0f));
- return btq;
+public class BoostingTermBuilder extends SpanBuilderBase {
- }
+ public SpanQuery getSpanQuery(Element e) throws ParserException {
+ String fieldName = DOMUtils.getAttributeWithInheritanceOrFail(e, "fieldName");
+ String value = DOMUtils.getNonBlankTextOrFail(e);
+
+ PayloadTermQuery btq = new PayloadTermQuery(new Term(fieldName, value), new AveragePayloadFunction());
+ btq.setBoost(DOMUtils.getAttribute(e, "boost", 1.0f));
+ return btq;
+ }
}
\ No newline at end of file
Modified: lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/CachedFilterBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/CachedFilterBuilder.java?rev=1160700&r1=1160699&r2=1160700&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/CachedFilterBuilder.java (original)
+++ lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/CachedFilterBuilder.java Tue Aug 23 14:06:58 2011
@@ -3,19 +3,14 @@
*/
package org.apache.lucene.xmlparser.builders;
-import java.util.Map.Entry;
-
import org.apache.lucene.search.CachingWrapperFilter;
import org.apache.lucene.search.Filter;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.QueryWrapperFilter;
-import org.apache.lucene.xmlparser.DOMUtils;
-import org.apache.lucene.xmlparser.FilterBuilder;
-import org.apache.lucene.xmlparser.FilterBuilderFactory;
-import org.apache.lucene.xmlparser.ParserException;
-import org.apache.lucene.xmlparser.QueryBuilder;
-import org.apache.lucene.xmlparser.QueryBuilderFactory;
+import org.apache.lucene.xmlparser.*;
import org.w3c.dom.Element;
+
+import java.util.Map;
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
@@ -32,99 +27,89 @@ import org.w3c.dom.Element;
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
/**
- * Filters are cached in an LRU Cache keyed on the contained query or filter object. Using this will
- * speed up overall performance for repeated uses of the same expensive query/filter. The sorts of
- * queries/filters likely to benefit from caching need not necessarily be complex - e.g. simple
- * TermQuerys with a large DF (document frequency) can be expensive on large indexes.
- * A good example of this might be a term query on a field with only 2 possible values -
- * "true" or "false". In a large index, querying or filtering on this field requires reading
+ * Filters are cached in an LRU Cache keyed on the contained query or filter object. Using this will
+ * speed up overall performance for repeated uses of the same expensive query/filter. The sorts of
+ * queries/filters likely to benefit from caching need not necessarily be complex - e.g. simple
+ * TermQuerys with a large DF (document frequency) can be expensive on large indexes.
+ * A good example of this might be a term query on a field with only 2 possible values -
+ * "true" or "false". In a large index, querying or filtering on this field requires reading
* millions of document ids from disk which can more usefully be cached as a filter bitset.
- *
+ * <p/>
* For Queries/Filters to be cached and reused the object must implement hashcode and
* equals methods correctly so that duplicate queries/filters can be detected in the cache.
- *
- * The CoreParser.maxNumCachedFilters property can be used to control the size of the LRU
+ * <p/>
+ * The CoreParser.maxNumCachedFilters property can be used to control the size of the LRU
* Cache established during the construction of CoreParser instances.
- *
*/
public class CachedFilterBuilder implements FilterBuilder {
- private QueryBuilderFactory queryFactory;
- private FilterBuilderFactory filterFactory;
-
- private LRUCache<Object,Filter> filterCache = null;
-
- private int cacheSize;
-
- public CachedFilterBuilder(QueryBuilderFactory queryFactory,
- FilterBuilderFactory filterFactory,int cacheSize)
- {
- this.queryFactory=queryFactory;
- this.filterFactory=filterFactory;
- this.cacheSize=cacheSize;
- }
-
- public synchronized Filter getFilter(Element e) throws ParserException
- {
-
- Element childElement = DOMUtils.getFirstChildOrFail(e);
-
- if (filterCache == null)
- {
- filterCache = new LRUCache<Object,Filter>(cacheSize);
- }
-
- // Test to see if child Element is a query or filter that needs to be
- // cached
- QueryBuilder qb = queryFactory.getQueryBuilder(childElement.getNodeName());
- Object cacheKey = null;
- Query q = null;
- Filter f = null;
- if (qb != null)
- {
- q = qb.getQuery(childElement);
- cacheKey = q;
- } else
- {
- f = filterFactory.getFilter(childElement);
- cacheKey = f;
- }
- Filter cachedFilter = filterCache.get(cacheKey);
- if (cachedFilter != null)
- {
- return cachedFilter; // cache hit
- }
-
- //cache miss
- if (qb != null)
- {
- cachedFilter = new QueryWrapperFilter(q);
- } else
- {
- cachedFilter = new CachingWrapperFilter(f);
- }
-
- filterCache.put(cacheKey, cachedFilter);
- return cachedFilter;
- }
-
- static class LRUCache<K,V> extends java.util.LinkedHashMap<K,V>
- {
- public LRUCache(int maxsize)
- {
- super(maxsize * 4 / 3 + 1, 0.75f, true);
- this.maxsize = maxsize;
- }
-
- protected int maxsize;
-
- @Override
- protected boolean removeEldestEntry(Entry<K,V> eldest)
- {
- return size() > maxsize;
- }
+ private final QueryBuilderFactory queryFactory;
+ private final FilterBuilderFactory filterFactory;
+
+ private LRUCache<Object, Filter> filterCache;
+
+ private final int cacheSize;
+
+ public CachedFilterBuilder(QueryBuilderFactory queryFactory,
+ FilterBuilderFactory filterFactory,
+ int cacheSize) {
+ this.queryFactory = queryFactory;
+ this.filterFactory = filterFactory;
+ this.cacheSize = cacheSize;
+ }
+
+ public synchronized Filter getFilter(Element e) throws ParserException {
+ Element childElement = DOMUtils.getFirstChildOrFail(e);
+
+ if (filterCache == null) {
+ filterCache = new LRUCache<Object, Filter>(cacheSize);
+ }
+
+ // Test to see if child Element is a query or filter that needs to be
+ // cached
+ QueryBuilder qb = queryFactory.getQueryBuilder(childElement.getNodeName());
+ Object cacheKey = null;
+ Query q = null;
+ Filter f = null;
+ if (qb != null) {
+ q = qb.getQuery(childElement);
+ cacheKey = q;
+ } else {
+ f = filterFactory.getFilter(childElement);
+ cacheKey = f;
+ }
+ Filter cachedFilter = filterCache.get(cacheKey);
+ if (cachedFilter != null) {
+ return cachedFilter; // cache hit
+ }
+
+ //cache miss
+ if (qb != null) {
+ cachedFilter = new QueryWrapperFilter(q);
+ } else {
+ cachedFilter = new CachingWrapperFilter(f);
+ }
+
+ filterCache.put(cacheKey, cachedFilter);
+ return cachedFilter;
+ }
+
+ static class LRUCache<K, V> extends java.util.LinkedHashMap<K, V> {
+
+ public LRUCache(int maxsize) {
+ super(maxsize * 4 / 3 + 1, 0.75f, true);
+ this.maxsize = maxsize;
+ }
+
+ protected int maxsize;
+
+ @Override
+ protected boolean removeEldestEntry(Map.Entry<K, V> eldest) {
+ return size() > maxsize;
+ }
- }
+ }
}
Modified: lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/ConstantScoreQueryBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/ConstantScoreQueryBuilder.java?rev=1160700&r1=1160699&r2=1160700&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/ConstantScoreQueryBuilder.java (original)
+++ lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/ConstantScoreQueryBuilder.java Tue Aug 23 14:06:58 2011
@@ -25,26 +25,22 @@ import org.w3c.dom.Element;
*/
/**
- *
+ *
*/
-public class ConstantScoreQueryBuilder implements QueryBuilder
-{
- private FilterBuilderFactory filterFactory;
-
- public ConstantScoreQueryBuilder(FilterBuilderFactory filterFactory)
- {
- this.filterFactory=filterFactory;
- }
-
- public Query getQuery(Element e) throws ParserException
- {
- Element filterElem=DOMUtils.getFirstChildOrFail(e);
- Query q=new ConstantScoreQuery(filterFactory.getFilter(filterElem));
-
- q.setBoost(DOMUtils.getAttribute(e,"boost",1.0f));
-
- return q;
-
- }
+public class ConstantScoreQueryBuilder implements QueryBuilder {
+
+ private final FilterBuilderFactory filterFactory;
+
+ public ConstantScoreQueryBuilder(FilterBuilderFactory filterFactory) {
+ this.filterFactory = filterFactory;
+ }
+
+ public Query getQuery(Element e) throws ParserException {
+ Element filterElem = DOMUtils.getFirstChildOrFail(e);
+
+ Query q = new ConstantScoreQuery(filterFactory.getFilter(filterElem));
+ q.setBoost(DOMUtils.getAttribute(e, "boost", 1.0f));
+ return q;
+ }
}
Modified: lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/DuplicateFilterBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/DuplicateFilterBuilder.java?rev=1160700&r1=1160699&r2=1160700&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/DuplicateFilterBuilder.java (original)
+++ lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/DuplicateFilterBuilder.java Tue Aug 23 14:06:58 2011
@@ -3,7 +3,7 @@
*/
package org.apache.lucene.xmlparser.builders;
-import org.apache.lucene.search.DuplicateFilter;
+import org.apache.lucene.sandbox.queries.DuplicateFilter;
import org.apache.lucene.search.Filter;
import org.apache.lucene.xmlparser.DOMUtils;
import org.apache.lucene.xmlparser.FilterBuilder;
@@ -28,44 +28,33 @@ import org.w3c.dom.Element;
*/
/**
- *
+ *
*/
public class DuplicateFilterBuilder implements FilterBuilder {
-
- public Filter getFilter(Element e) throws ParserException {
- String fieldName=DOMUtils.getAttributeWithInheritanceOrFail(e,"fieldName");
- DuplicateFilter df=new DuplicateFilter(fieldName);
- String keepMode=DOMUtils.getAttribute(e,"keepMode","first");
- if(keepMode.equalsIgnoreCase("first"))
- {
- df.setKeepMode(DuplicateFilter.KeepMode.KM_USE_FIRST_OCCURRENCE);
- }
- else
- if(keepMode.equalsIgnoreCase("last"))
- {
- df.setKeepMode(DuplicateFilter.KeepMode.KM_USE_LAST_OCCURRENCE);
- }
- else
- {
- throw new ParserException("Illegal keepMode attribute in DuplicateFilter:"+keepMode);
- }
- String processingMode=DOMUtils.getAttribute(e,"processingMode","full");
- if(processingMode.equalsIgnoreCase("full"))
- {
- df.setProcessingMode(DuplicateFilter.ProcessingMode.PM_FULL_VALIDATION);
- }
- else
- if(processingMode.equalsIgnoreCase("fast"))
- {
- df.setProcessingMode(DuplicateFilter.ProcessingMode.PM_FAST_INVALIDATION);
- }
- else
- {
- throw new ParserException("Illegal processingMode attribute in DuplicateFilter:"+processingMode);
- }
-
- return df;
- }
+ public Filter getFilter(Element e) throws ParserException {
+ String fieldName = DOMUtils.getAttributeWithInheritanceOrFail(e, "fieldName");
+ DuplicateFilter df = new DuplicateFilter(fieldName);
+
+ String keepMode = DOMUtils.getAttribute(e, "keepMode", "first");
+ if (keepMode.equalsIgnoreCase("first")) {
+ df.setKeepMode(DuplicateFilter.KeepMode.KM_USE_FIRST_OCCURRENCE);
+ } else if (keepMode.equalsIgnoreCase("last")) {
+ df.setKeepMode(DuplicateFilter.KeepMode.KM_USE_LAST_OCCURRENCE);
+ } else {
+ throw new ParserException("Illegal keepMode attribute in DuplicateFilter:" + keepMode);
+ }
+
+ String processingMode = DOMUtils.getAttribute(e, "processingMode", "full");
+ if (processingMode.equalsIgnoreCase("full")) {
+ df.setProcessingMode(DuplicateFilter.ProcessingMode.PM_FULL_VALIDATION);
+ } else if (processingMode.equalsIgnoreCase("fast")) {
+ df.setProcessingMode(DuplicateFilter.ProcessingMode.PM_FAST_INVALIDATION);
+ } else {
+ throw new ParserException("Illegal processingMode attribute in DuplicateFilter:" + processingMode);
+ }
+
+ return df;
+ }
}