You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@lucene.apache.org by Todd Nine <to...@spidertracks.com> on 2011/02/10 22:27:18 UTC
escaping of queries with solr
Hi guys,
We're migrating from Lucene to Solr. We have a lot of existing code
that created queries in memory with Lucene. Below is an example of such
a query.
BooleanQuery query = new BooleanQuery();
BooleanQuery inputTerms = new BooleanQuery();
inputTerms.add(new TermQuery(new Term(FIELD_EMAIL, input)),
Occur.SHOULD);
String numeric = getNumericString(input);
if (StringUtils.hasText(numeric)) {
inputTerms.add(new TermQuery(new Term(FIELD_PHONE, numeric)),
Occur.SHOULD);
}
query.add(inputTerms, Occur.MUST);
NumericRangeQuery time = NumericRangeQuery.newLongRange(
FIELD_CREATETIME, null, endTime, true, true);
query.add(time, Occur.MUST);
return getResults(query, count);
As per an old thread in the mailing list, I can generally call
query.toString() which will generate a query I can send to solr.
However, we're getting some strings such as this.
+(email_string_multi_index:+6411122222
phone_string_multi_index:6411122222) +rslved_string_index:false
+crttime_long_index:[* TO 1284093338200]':
Which will generate this error Encountered " "+" "+ "" at line 1, column
27.
The cause is the "+6411122222".
Is there an equivalent for building a query tree in the Solr4j client
that will properly escape the input sequence?
Thanks,
Todd