Okay, first, now that we can see your data, it looks to me like you should keep it in two fields: 1) a "string" field for exact match, faceting, and precise wildcarding, and 2) copy to a "text" field for searching by keyword. For the latter, use a field type/analyzer comparable to "text_en_splitting".

Any time you have a query term with anything other than a letters, digits, hyphens, and underscores, you should enclose it in quotes (double quote).

For example: "Soft(drink)"

So the query parsing exception is really just twlling you to enclose your term in quotes.

But if your terms are in a "text" field, those special characters will be deleted and treated as spaces anyway, so that "Soft(drink)" would be equivalent to "soft drink" (or even "Soft-Drink".)

But if you also store your product category as a "string" field, you would have to use either the full category name in quotes, or use wildcards, such as "Women's Wear" or Women*.

You can also escape non-letter character, such as: Women\'s\ Wear - note the escape of the space between words, needed for string fields, but not in text fields.

-- Jack Krupansky

-----Original Message----- From: Prachi Phatak
Sent: Thursday, May 17, 2012 2:52 PM
To: solr-user@lucene.apache.org
Subject: org.apache.solr.common.SolrException: org.apache.lucene.queryParser.ParseException: Cannot parse

My configuration
<fieldType name="textgen" class="solr.TextField" positionIncrementGap="100">
     <analyzer type="index">
       <tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" /> <filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="15" side="front"/>
       <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.WhitespaceTokenizerFactory" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> <filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="15" side="front"/>
       <filter class="solr.StopFilterFactory"
               ignoreCase="true"
               words="stopwords.txt"
               enablePositionIncrements="true"
               />
<filter class="solr.WordDelimiterFilterFactory" preserveOriginal="1" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="0"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
     </analyzer>
   </fieldType>
Data:
Coke Product    Softdrink
Coke Product    Softdrink
Coke Product    Softdrink
Coke() Product    Softdrink
Pepsi Product    Softdrink
Pepsi Product    Softdrink
Other Product    Soft(drink)
Domestic-Beer    Beer-34333
Domestic-Beer    Beer-34333
Domestic-Beer    Beer
Domestic Beer    Beer
Import Beer+9    Beer
Import Beer    Beer
Import Beer    Beer
T-Shirt    Shirt
T-Shirt    Shirt
T-Shirt    Shirt
T-Shirt    Shirt-34333
T-Shirt    Shirt
Blouse    Women's-Wear
Blouse    Women's-Wear
Skirt%3    Women's Wear
Skirt    Women's Wear
Dress    Formal Wear
Whenever I search for Soft(, it gives me the following error and if try to search 34333, it gives no results SEVERE: org.apache.solr.common.SolrException: org.apache.lucene.queryParser.ParseException: Cannot parse '+DIMENSION:Product^1.0 +( (SKU:soft(*^1.0 DIM_ATTR_ONE:soft(*^1.0 DIM_ATTR_
Was expecting one of:
   <AND> ...
   <OR> ...
   <NOT> ...
   "+" ...
   "-" ...
   "(" ...
   ")" ...
   "*" ...
   "^" ...
   <QUOTED> ...
   <TERM> ...
   <PREFIXTERM> ...
   <WILDTERM> ...
   "[" ...
   "{" ...
   <NUMBER> ...
at org.apache.solr.handler.component.QueryComponent.prepare(QueryComponent.java:105) at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:173) at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:129)
       at org.apache.solr.core.SolrCore.execute(SolrCore.java:1368)
at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:356) at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:252) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1212) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:399) at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766) at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:450) at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230) at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
       at org.mortbay.jetty.Server.handle(Server.java:326)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:928)
       at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549)
       at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
       at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228) at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) Caused by: org.apache.lucene.queryParser.ParseException: Cannot parse '+DIMENSION:Product^1.0 +( (SKU:soft(*^1.0 DIM_ATTR_ONE:soft(*^1.0 DIM_ATTR_TWO:soft(*^1.0))': Encountered "<EO

Reply via email to