From ef498a2ce770c46f366658d041e5eccc46503e21 Mon Sep 17 00:00:00 2001 From: Christine Poerschke Date: Fri, 20 Nov 2015 12:14:59 +0000 Subject: [PATCH] LUCENE-6893: factor out CorePlusQueriesParser from CorePlusExtensionsParser git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1715343 13f79535-47bb-0310-9956-ffa450edef68 --- lucene/CHANGES.txt | 3 + .../xml/CorePlusExtensionsParser.java | 7 +-- .../xml/CorePlusQueriesParser.java | 57 +++++++++++++++++++ 3 files changed, 62 insertions(+), 5 deletions(-) create mode 100644 lucene/queryparser/src/java/org/apache/lucene/queryparser/xml/CorePlusQueriesParser.java diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt index 17ea07dbd50..cf1ae74758c 100644 --- a/lucene/CHANGES.txt +++ b/lucene/CHANGES.txt @@ -369,6 +369,9 @@ Other * LUCENE-6887: DefaultSimilarity is deprecated, use ClassicSimilarity for equivilent behavior, or consider switching to BM25Similarity which will become the new default in Lucene 6.0 (hossman) +* LUCENE-6893: factor out CorePlusQueriesParser from CorePlusExtensionsParser + (Christine Poerschke) + Build * LUCENE-6732: Improve checker for invalid source patterns to also diff --git a/lucene/queryparser/src/java/org/apache/lucene/queryparser/xml/CorePlusExtensionsParser.java b/lucene/queryparser/src/java/org/apache/lucene/queryparser/xml/CorePlusExtensionsParser.java index 88536a597f4..d36a03eee6e 100644 --- a/lucene/queryparser/src/java/org/apache/lucene/queryparser/xml/CorePlusExtensionsParser.java +++ b/lucene/queryparser/src/java/org/apache/lucene/queryparser/xml/CorePlusExtensionsParser.java @@ -2,7 +2,7 @@ package org.apache.lucene.queryparser.xml; import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.queryparser.classic.QueryParser; -import org.apache.lucene.queryparser.xml.builders.*; +import org.apache.lucene.queryparser.xml.builders.FuzzyLikeThisQueryBuilder; /* * Licensed to the Apache Software Foundation (ASF) under one or more @@ -26,7 +26,7 @@ import org.apache.lucene.queryparser.xml.builders.*; * Lucene's sandbox and queries * modules in addition to core queries. */ -public class CorePlusExtensionsParser extends CoreParser { +public class CorePlusExtensionsParser extends CorePlusQueriesParser { /** * Construct an XML parser that uses a single instance QueryParser for handling @@ -49,9 +49,6 @@ public class CorePlusExtensionsParser extends CoreParser { private CorePlusExtensionsParser(String defaultField, Analyzer analyzer, QueryParser parser) { super(defaultField, analyzer, parser); - String fields[] = {"contents"}; - queryFactory.addBuilder("LikeThisQuery", new LikeThisQueryBuilder(analyzer, fields)); - queryFactory.addBuilder("BoostingQuery", new BoostingQueryBuilder(queryFactory)); queryFactory.addBuilder("FuzzyLikeThisQuery", new FuzzyLikeThisQueryBuilder(analyzer)); } diff --git a/lucene/queryparser/src/java/org/apache/lucene/queryparser/xml/CorePlusQueriesParser.java b/lucene/queryparser/src/java/org/apache/lucene/queryparser/xml/CorePlusQueriesParser.java new file mode 100644 index 00000000000..023334d7d00 --- /dev/null +++ b/lucene/queryparser/src/java/org/apache/lucene/queryparser/xml/CorePlusQueriesParser.java @@ -0,0 +1,57 @@ +package org.apache.lucene.queryparser.xml; + +import org.apache.lucene.analysis.Analyzer; +import org.apache.lucene.queryparser.classic.QueryParser; +import org.apache.lucene.queryparser.xml.builders.LikeThisQueryBuilder; +import org.apache.lucene.queryparser.xml.builders.BoostingQueryBuilder; + +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * Assembles a QueryBuilder which uses Query objects from + * Lucene's queries module in addition to core queries. + */ +public class CorePlusQueriesParser 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 parser A QueryParser which will be synchronized on during parse calls. + */ + public CorePlusQueriesParser(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 + */ + public CorePlusQueriesParser(String defaultField, Analyzer analyzer) { + this(defaultField, analyzer, null); + } + + protected CorePlusQueriesParser(String defaultField, Analyzer analyzer, QueryParser parser) { + super(defaultField, analyzer, parser); + String fields[] = {"contents"}; + queryFactory.addBuilder("LikeThisQuery", new LikeThisQueryBuilder(analyzer, fields)); + queryFactory.addBuilder("BoostingQuery", new BoostingQueryBuilder(queryFactory)); + + } +}