You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by cp...@apache.org on 2017/01/30 15:39:17 UTC
lucene-solr:master: LUCENE-7658: queryparser/xml CoreParser now
implements SpanQueryBuilder interface. (Daniel Collins, Christine Poerschke)
Repository: lucene-solr
Updated Branches:
refs/heads/master f73d93ac1 -> 61ab4e338
LUCENE-7658: queryparser/xml CoreParser now implements SpanQueryBuilder interface. (Daniel Collins, Christine Poerschke)
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/61ab4e33
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/61ab4e33
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/61ab4e33
Branch: refs/heads/master
Commit: 61ab4e338e3532210881ab7c8d66927e4459d447
Parents: f73d93a
Author: Christine Poerschke <cp...@apache.org>
Authored: Mon Jan 30 14:37:34 2017 +0000
Committer: Christine Poerschke <cp...@apache.org>
Committed: Mon Jan 30 14:37:34 2017 +0000
----------------------------------------------------------------------
lucene/CHANGES.txt | 3 +++
.../lucene/queryparser/xml/CoreParser.java | 18 +++++++++++++++++-
.../lucene/queryparser/xml/TestCoreParser.java | 19 +++++++++++++++++--
3 files changed, 37 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/61ab4e33/lucene/CHANGES.txt
----------------------------------------------------------------------
diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt
index 2e89f3b..328f742 100644
--- a/lucene/CHANGES.txt
+++ b/lucene/CHANGES.txt
@@ -153,6 +153,9 @@ Other
* LUCENE-7666: Fix typos in lucene-join package info javadoc.
(Tom Saleeba via Christine Poerschke)
+* LUCENE-7658: queryparser/xml CoreParser now implements SpanQueryBuilder interface.
+ (Daniel Collins, Christine Poerschke)
+
======================= Lucene 6.4.1 =======================
Bug Fixes
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/61ab4e33/lucene/queryparser/src/java/org/apache/lucene/queryparser/xml/CoreParser.java
----------------------------------------------------------------------
diff --git a/lucene/queryparser/src/java/org/apache/lucene/queryparser/xml/CoreParser.java b/lucene/queryparser/src/java/org/apache/lucene/queryparser/xml/CoreParser.java
index d8aa8ef..8637c4a 100644
--- a/lucene/queryparser/src/java/org/apache/lucene/queryparser/xml/CoreParser.java
+++ b/lucene/queryparser/src/java/org/apache/lucene/queryparser/xml/CoreParser.java
@@ -20,6 +20,7 @@ import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.queryparser.classic.QueryParser;
import org.apache.lucene.queryparser.xml.builders.*;
import org.apache.lucene.search.Query;
+import org.apache.lucene.search.spans.SpanQuery;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
@@ -31,7 +32,7 @@ import java.io.InputStream;
/**
* Assembles a QueryBuilder which uses only core Lucene Query objects
*/
-public class CoreParser implements QueryBuilder {
+public class CoreParser implements QueryBuilder, SpanQueryBuilder {
protected String defaultField;
protected Analyzer analyzer;
@@ -114,6 +115,11 @@ public class CoreParser implements QueryBuilder {
return getQuery(parseXML(xmlStream).getDocumentElement());
}
+ // for test use
+ SpanQuery parseAsSpanQuery(InputStream xmlStream) throws ParserException {
+ return getSpanQuery(parseXML(xmlStream).getDocumentElement());
+ }
+
public void addQueryBuilder(String nodeName, QueryBuilder builder) {
queryFactory.addBuilder(nodeName, builder);
}
@@ -122,6 +128,11 @@ public class CoreParser implements QueryBuilder {
spanFactory.addBuilder(nodeName, builder);
}
+ public void addSpanQueryBuilder(String nodeName, SpanQueryBuilder builder) {
+ queryFactory.addBuilder(nodeName, builder);
+ spanFactory.addBuilder(nodeName, builder);
+ }
+
static Document parseXML(InputStream pXmlFile) throws ParserException {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = null;
@@ -144,4 +155,9 @@ public class CoreParser implements QueryBuilder {
public Query getQuery(Element e) throws ParserException {
return queryFactory.getQuery(e);
}
+
+ @Override
+ public SpanQuery getSpanQuery(Element e) throws ParserException {
+ return spanFactory.getSpanQuery(e);
+ }
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/61ab4e33/lucene/queryparser/src/test/org/apache/lucene/queryparser/xml/TestCoreParser.java
----------------------------------------------------------------------
diff --git a/lucene/queryparser/src/test/org/apache/lucene/queryparser/xml/TestCoreParser.java b/lucene/queryparser/src/test/org/apache/lucene/queryparser/xml/TestCoreParser.java
index 1906aef..8f07c4a 100644
--- a/lucene/queryparser/src/test/org/apache/lucene/queryparser/xml/TestCoreParser.java
+++ b/lucene/queryparser/src/test/org/apache/lucene/queryparser/xml/TestCoreParser.java
@@ -27,6 +27,7 @@ import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TopDocs;
+import org.apache.lucene.search.spans.SpanQuery;
import org.apache.lucene.util.LuceneTestCase;
import org.junit.AfterClass;
@@ -116,6 +117,9 @@ public class TestCoreParser extends LuceneTestCase {
public void testSpanTermXML() throws Exception {
Query q = parse("SpanQuery.xml");
dumpResults("Span Query", q, 5);
+ SpanQuery sq = parseAsSpan("SpanQuery.xml");
+ dumpResults("Span Query", sq, 5);
+ assertEquals(q, sq);
}
public void testConstantScoreQueryXML() throws Exception {
@@ -207,10 +211,21 @@ public class TestCoreParser extends LuceneTestCase {
}
protected Query parse(String xmlFileName) throws ParserException, IOException {
+ return implParse(xmlFileName, false);
+ }
+
+ protected SpanQuery parseAsSpan(String xmlFileName) throws ParserException, IOException {
+ return (SpanQuery)implParse(xmlFileName, true);
+ }
+
+ private Query implParse(String xmlFileName, boolean span) throws ParserException, IOException {
try (InputStream xmlStream = TestCoreParser.class.getResourceAsStream(xmlFileName)) {
assertNotNull("Test XML file " + xmlFileName + " cannot be found", xmlStream);
- Query result = coreParser().parse(xmlStream);
- return result;
+ if (span) {
+ return coreParser().parseAsSpanQuery(xmlStream);
+ } else {
+ return coreParser().parse(xmlStream);
+ }
}
}