You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-user@lucene.apache.org by Michael Knapp <mi...@gmail.com> on 2014/01/07 22:10:22 UTC
Query Validation How To
Hi,
My team had a request to host a web service that validates a query to our
solr instance without actually submitting the query. I'm having some
trouble getting it to work.
At the moment I have successfully loaded in a SolrConfig and IndexSchema,
which were built with the same config and schema files as my team's real
Solr instance. The objective here is to get a QueryParser that has the
exact same behaviour as Solr's, so we can parse query strings and tell our
users if the query is valid, or why it's not valid.
So I was getting a QueryParser like this:
queryParser=new
QueryParser(Version.LUCENE_43,"text",schema.getQueryAnalyzer());
Everything appeared to be fine until I tested it with this "REALFIELD:*",
where REALFIELD was actually the name of some real field in our solr
schema. It threw an exception claiming that "'*' or '?' not allowed as
first character in WildcardQuery". That is actually false, our users can
and do submit queries that start with wildcards.
So I know I must have the wrong type of object for a QueryParser, I think
I'm supposed to be using an instance of SolrQueryParser instead of lucene's
QueryParser, but I cannot figure out how to instantiate a SolrQueryParser.
The constructor for a SolrQueryParser requires a QParser instance. There
are three types of QParsers,
DisMaxQParser<http://lucene.apache.org/solr/4_0_0/solr-core/org/apache/solr/search/DisMaxQParser.html>
, FunctionQParser<http://lucene.apache.org/solr/4_0_0/solr-core/org/apache/solr/search/FunctionQParser.html>
, SpatialFilterQParser<http://lucene.apache.org/solr/4_0_0/solr-core/org/apache/solr/search/SpatialFilterQParser.html>,
I don't think our solr cluster uses any of those.
Would somebody please explain to me how to properly get an instance of a
SolrQueryParser when all I have is the SolrConfig and IndexSchema?
Michael Knapp
Re: Query Validation How To
Posted by Ahmet Arslan <io...@yahoo.com>.
Hi Michael,
I would look at tests, a subclass of org.apache.solr.SolrTestCaseJ4, for example org.apache.solr.search.TestRangeQuery could be a starting point.
Ahmet
On Wednesday, January 8, 2014 12:21 AM, Michael Knapp <mi...@gmail.com> wrote:
Hi,
My team had a request to host a web service that validates a query to our
solr instance without actually submitting the query. I'm having some
trouble getting it to work.
At the moment I have successfully loaded in a SolrConfig and IndexSchema,
which were built with the same config and schema files as my team's real
Solr instance. The objective here is to get a QueryParser that has the
exact same behaviour as Solr's, so we can parse query strings and tell our
users if the query is valid, or why it's not valid.
So I was getting a QueryParser like this:
queryParser=new
QueryParser(Version.LUCENE_43,"text",schema.getQueryAnalyzer());
Everything appeared to be fine until I tested it with this "REALFIELD:*",
where REALFIELD was actually the name of some real field in our solr
schema. It threw an exception claiming that "'*' or '?' not allowed as
first character in WildcardQuery". That is actually false, our users can
and do submit queries that start with wildcards.
So I know I must have the wrong type of object for a QueryParser, I think
I'm supposed to be using an instance of SolrQueryParser instead of lucene's
QueryParser, but I cannot figure out how to instantiate a SolrQueryParser.
The constructor for a SolrQueryParser requires a QParser instance. There
are three types of QParsers,
DisMaxQParser<http://lucene.apache.org/solr/4_0_0/solr-core/org/apache/solr/search/DisMaxQParser.html>
, FunctionQParser<http://lucene.apache.org/solr/4_0_0/solr-core/org/apache/solr/search/FunctionQParser.html>
, SpatialFilterQParser<http://lucene.apache.org/solr/4_0_0/solr-core/org/apache/solr/search/SpatialFilterQParser.html>,
I don't think our solr cluster uses any of those.
Would somebody please explain to me how to properly get an instance of a
SolrQueryParser when all I have is the SolrConfig and IndexSchema?
Michael Knapp