Hello,

term query parser is your friend in this case. With this you don't need to 
escape anything.

SolrQuery query = new SolrQuery();

query.setQuery("{!term f=id}bar_http://bar.com/?doc=452";);

--- On Wed, 9/12/12, sy...@web.de <sy...@web.de> wrote:

> From: sy...@web.de <sy...@web.de>
> Subject: Cannot parse ":", using HTTP-URL as id
> To: solr-user@lucene.apache.org
> Date: Wednesday, September 12, 2012, 7:40 PM
> Hi,
> 
> I defined a field "id" in my schema.xml and use it as an
> <uniqueKey>:
>   <field name="id" type="string" indexed="true"
> stored="true" required="true" />
>   <uniqueKey>id</uniqueKey>
> 
> I want to store URLs with a prefix in this field to be sure
> that every id is unique among websites. For example:
>   domain_http://www.domain.com/?p=12345
>   foo_http://foo.com
>   bar_http://bar.com/?doc=452
> I wrote a Java app, which uses Solrj to communicate with a
> running Solr instance. Solr (or Solrj, not sure about this)
> complains that it can't parse ":":
>   Exception in thread "main"
> org.apache.solr.common.SolrException:
>  
> org.apache.lucene.queryparser.classic.ParseException:
>   Cannot parse 'id:domain_http://www.domain.com/?p=12345': Encountered " ":" 
> ":
> "" at line 1, column 14.
> 
> How should I handle characters like ":" to solve this
> problem?
> 
> I already tried to escape the ":" like this:
>   String id = "domain_http://www.domain.com/?p=12345".replaceAll(":",
> "\\\\:"));
>   ...
>   document.addField("id", id);
>   ...
> But then Solr (or Solrj) complains again:
>   Exception in thread "main"
> org.apache.solr.common.SolrException:
>  
> org.apache.lucene.queryparser.classic.ParseException:
>   Cannot parse
> 'id:domain_http\://www.domain.com/?p=12345': Lexical error
> at line 1, column 42.  Encountered: <EOF> after :
> "/?p=12345"
> I use 4 backslashes (\\\\) for double-escape. The first
> escape is for Java itself, the second is for Solr to handle
> it (I guess).
> 
> So what is the correct or usual way to deal with special
> characters like ":" in Solr (or Solrj)? I don't know if Solr
> or Solrj is the problem, but I guess it is Solrj?
>

Reply via email to