You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-commits@lucene.apache.org by ho...@apache.org on 2007/02/22 23:18:03 UTC
svn commit: r510689 - in /lucene/solr/trunk: ./
src/java/org/apache/solr/request/ src/java/org/apache/solr/schema/
src/java/org/apache/solr/search/ src/java/org/apache/solr/util/
Author: hossman
Date: Thu Feb 22 14:18:02 2007
New Revision: 510689
URL: http://svn.apache.org/viewvc?view=rev&rev=510689
Log:
reverting some of Erik's recent changes to the SolrQueryParser constructor and implementing the intent in a new IndexSchema.getSolrQueryParser method
Modified:
lucene/solr/trunk/CHANGES.txt
lucene/solr/trunk/src/java/org/apache/solr/request/DisMaxRequestHandler.java
lucene/solr/trunk/src/java/org/apache/solr/request/SimpleFacets.java
lucene/solr/trunk/src/java/org/apache/solr/schema/IndexSchema.java
lucene/solr/trunk/src/java/org/apache/solr/search/QueryParsing.java
lucene/solr/trunk/src/java/org/apache/solr/search/SolrQueryParser.java
lucene/solr/trunk/src/java/org/apache/solr/util/SolrPluginUtils.java
Modified: lucene/solr/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/CHANGES.txt?view=diff&rev=510689&r1=510688&r2=510689
==============================================================================
--- lucene/solr/trunk/CHANGES.txt (original)
+++ lucene/solr/trunk/CHANGES.txt Thu Feb 22 14:18:02 2007
@@ -130,6 +130,13 @@
listings). Fix JSON output bug for null values. Internal JAVA API:
change most uses of NamedList to SimpleOrderedMap. (yonik)
+ 3. A new method "getSolrQueryParser" has been added to the IndexSchema
+ class for retrieving a new SolrQueryParser instance with all options
+ specified in the schema.xml's <solrQueryParser> block set. The
+ documentation for the SolrQueryParser constructor and it's use of
+ IndexSchema have also been clarified.
+ (Erik Hatcher and hossman)
+
Optimizations
1. SOLR-114: HashDocSet specific implementations of union() and andNot()
for a 20x performance improvement for those set operations, and a new
Modified: lucene/solr/trunk/src/java/org/apache/solr/request/DisMaxRequestHandler.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/request/DisMaxRequestHandler.java?view=diff&rev=510689&r1=510688&r2=510689
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/request/DisMaxRequestHandler.java (original)
+++ lucene/solr/trunk/src/java/org/apache/solr/request/DisMaxRequestHandler.java Thu Feb 22 14:18:02 2007
@@ -182,7 +182,7 @@
int qslop = params.getInt(DMP.QS, 0);
/* a generic parser for parsing regular lucene queries */
- QueryParser p = new SolrQueryParser(schema, null);
+ QueryParser p = schema.getSolrQueryParser(null);
/* a parser for dealing with user input, which will convert
* things to DisjunctionMaxQueries
Modified: lucene/solr/trunk/src/java/org/apache/solr/request/SimpleFacets.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/request/SimpleFacets.java?view=diff&rev=510689&r1=510688&r2=510689
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/request/SimpleFacets.java (original)
+++ lucene/solr/trunk/src/java/org/apache/solr/request/SimpleFacets.java Thu Feb 22 14:18:02 2007
@@ -106,7 +106,7 @@
* If user doesn't want schema default for facet.query, they should be
* explicit.
*/
- SolrQueryParser qp = new SolrQueryParser(searcher.getSchema(),null);
+ SolrQueryParser qp = searcher.getSchema().getSolrQueryParser(null);
String[] facetQs = params.getParams(SolrParams.FACET_QUERY);
if (null != facetQs && 0 != facetQs.length) {
Modified: lucene/solr/trunk/src/java/org/apache/solr/schema/IndexSchema.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/schema/IndexSchema.java?view=diff&rev=510689&r1=510688&r2=510689
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/schema/IndexSchema.java (original)
+++ lucene/solr/trunk/src/java/org/apache/solr/schema/IndexSchema.java Thu Feb 22 14:18:02 2007
@@ -23,11 +23,13 @@
import org.apache.lucene.document.Fieldable;
import org.apache.lucene.search.DefaultSimilarity;
import org.apache.lucene.search.Similarity;
+import org.apache.lucene.queryParser.QueryParser;
import org.apache.solr.core.SolrException;
import org.apache.solr.core.Config;
import org.apache.solr.analysis.TokenFilterFactory;
import org.apache.solr.analysis.TokenizerChain;
import org.apache.solr.analysis.TokenizerFactory;
+import org.apache.solr.search.SolrQueryParser;
import org.apache.solr.util.DOMUtil;
import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
@@ -149,12 +151,33 @@
private String defaultSearchFieldName=null;
private String queryParserDefaultOperator = "OR";
- /** Name of the default search field specified in the schema file */
+ /**
+ * A SolrQueryParser linked to this IndexSchema for field datatype
+ * information, and populated with default options from the
+ * <solrQueryParser> configuration for this IndexSchema.
+ *
+ * @param defaultField if non-null overrides the schema default
+ */
+ public SolrQueryParser getSolrQueryParser(String defaultField) {
+ SolrQueryParser qp = new SolrQueryParser(this,defaultField);
+ String operator = getQueryParserDefaultOperator();
+ qp.setDefaultOperator("AND".equals(operator) ?
+ QueryParser.Operator.AND : QueryParser.Operator.OR);
+ return qp;
+ }
+
+ /**
+ * Name of the default search field specified in the schema file
+ * @deprecated use getSolrQueryParser().getField()
+ */
public String getDefaultSearchFieldName() {
return defaultSearchFieldName;
}
- /** default operator ("AND" or "OR") for QueryParser */
+ /**
+ * default operator ("AND" or "OR") for QueryParser
+ * @deprecated use getSolrQueryParser().getDefaultOperator()
+ */
public String getQueryParserDefaultOperator() {
return queryParserDefaultOperator;
}
Modified: lucene/solr/trunk/src/java/org/apache/solr/search/QueryParsing.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/search/QueryParsing.java?view=diff&rev=510689&r1=510688&r2=510689
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/search/QueryParsing.java (original)
+++ lucene/solr/trunk/src/java/org/apache/solr/search/QueryParsing.java Thu Feb 22 14:18:02 2007
@@ -62,7 +62,7 @@
*/
public static Query parseQuery(String qs, String defaultField, IndexSchema schema) {
try {
- Query query = new SolrQueryParser(schema, defaultField).parse(qs);
+ Query query = schema.getSolrQueryParser(defaultField).parse(qs);
if (SolrCore.log.isLoggable(Level.FINEST)) {
SolrCore.log.finest("After QueryParser:" + query);
@@ -85,7 +85,7 @@
*/
public static Query parseQuery(String qs, String defaultField, SolrParams params, IndexSchema schema) {
try {
- SolrQueryParser parser = new SolrQueryParser(schema, defaultField);
+ SolrQueryParser parser = schema.getSolrQueryParser(defaultField);
String opParam = params.get(OP);
if (opParam != null) {
parser.setDefaultOperator("AND".equals(opParam) ? QueryParser.Operator.AND : QueryParser.Operator.OR);
Modified: lucene/solr/trunk/src/java/org/apache/solr/search/SolrQueryParser.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/search/SolrQueryParser.java?view=diff&rev=510689&r1=510688&r2=510689
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/search/SolrQueryParser.java (original)
+++ lucene/solr/trunk/src/java/org/apache/solr/search/SolrQueryParser.java Thu Feb 22 14:18:02 2007
@@ -52,16 +52,19 @@
protected final IndexSchema schema;
/**
- *
+ * Constructs a SolrQueryParser using the schema to understand the
+ * formats and datatypes of each field. Only the defaultSearchField
+ * will be used from the IndexSchema (unless overridden),
+ * <solrQueryParser> will not be used.
+ *
* @param schema Used for default search field name if defaultField is null and field information is used for analysis
* @param defaultField default field used for unspecified search terms. if null, the schema default field is used
+ * @see IndexSchema.getSolrQueryParser
*/
public SolrQueryParser(IndexSchema schema, String defaultField) {
super(defaultField == null ? schema.getDefaultSearchFieldName() : defaultField, schema.getQueryAnalyzer());
this.schema = schema;
setLowercaseExpandedTerms(false);
- String operator = schema.getQueryParserDefaultOperator();
- setDefaultOperator("AND".equals(operator) ? QueryParser.Operator.AND : QueryParser.Operator.OR);
}
protected Query getFieldQuery(String field, String queryText) throws ParseException {
Modified: lucene/solr/trunk/src/java/org/apache/solr/util/SolrPluginUtils.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/util/SolrPluginUtils.java?view=diff&rev=510689&r1=510688&r2=510689
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/util/SolrPluginUtils.java (original)
+++ lucene/solr/trunk/src/java/org/apache/solr/util/SolrPluginUtils.java Thu Feb 22 14:18:02 2007
@@ -700,6 +700,8 @@
public DisjunctionMaxQueryParser(IndexSchema s, String defaultField) {
super(s,defaultField);
+ // don't trust that our parent class won't ever change it's default
+ setDefaultOperator(QueryParser.Operator.OR);
}
public DisjunctionMaxQueryParser(IndexSchema s) {
this(s,null);