SKU should be type "string" and then SKU_text would be your text type.

Or, you can do it the opposite: SKU would be text and SKU_string for the raw string value for precise wildcards and faceting.

The Solr example does have "sku" as a text field. You can do it that way or the opposite. Whichever feels more natural for your application.

-- Jack Krupansky

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

So do you mean I should change it " class="solr.TextField" to " class="solr.StrField"?

-----Original Message-----
From: Jack Krupansky [mailto:j...@basetechnology.com]
Sent: Thursday, May 17, 2012 3:00 PM
To: solr-user@lucene.apache.org
Subject: Re: org.apache.solr.common.SolrException: org.apache.lucene.queryParser.ParseException: Cannot parse

Sorry, my suggestion for the escaped left parenthesis is if you change SKU to be a string field. And then have SKU_text as a copy of that field (add a copyField to your schema.xml for SKU to SKU_text) but with some "text"
type - then you could simply say SKU_text:soft .

-- Jack Krupansky

-----Original Message-----
From: Jack Krupansky
Sent: Thursday, May 17, 2012 3:50 PM
To: solr-user@lucene.apache.org
Subject: Re: org.apache.solr.common.SolrException:
org.apache.lucene.queryParser.ParseException: Cannot parse

Code? I'm not sure what you're referring to. These changes are in schema.xml and solrconfig.xml.

In your query, you need to change:

SKU:soft(*^1.0

to

SKU:soft\(*^1.0

-- Jack Krupansky

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

Can I do this in the configuration or I have to change my code.

-----Original Message-----
From: Jack Krupansky [mailto:j...@basetechnology.com]
Sent: Thursday, May 17, 2012 2:23 PM
To: solr-user@lucene.apache.org; Prachi Phatak
Subject: Re: org.apache.solr.common.SolrException:
org.apache.lucene.queryParser.ParseException: Cannot parse

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.ja
va: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