Uploaded image for project: 'eZ Publish / Platform'
  1. eZ Publish / Platform
  2. EZP-19267

Regression from #18701: Filters don't work any more because of new escapeQuery function

    XMLWordPrintable

Details

    • Icon: Bug Bug
    • Resolution: Duplicate
    • Icon: Medium Medium
    • 4.7.0alpha1
    • 4.4.0, 4.6.0
    • None
    • eZ Publish 4.4
      eZ Find 2.3
      EZSP-007-EZP4.4 Service Pack

    Description

      Fix for public issue http://issues.ez.no/18701 #018701: eZ Find issue when searching for a string with (:) or (+), features the ezfeZPSolrQueryBuilder::escapeQuery function, which effectively prevents SOLR filters from working. For instance, a fetch containing the following filter:

      'filter', array( 'article/publish_date:[* TO *]' ),
      

      ...will fail because ezfeZPSolrQueryBuilder::escapeQuery will escape both "[" and "]" characters, resulting in the following SOLR output:

      SEVERE: org.apache.solr.common.SolrException: Invalid Date String:'[*'
      	at org.apache.solr.schema.DateField.parseMath(DateField.java:163)
      	at org.apache.solr.schema.TrieDateField.readableToIndexed(TrieDateField.java:129)
      	at org.apache.solr.schema.TrieDateField.toInternal(TrieDateField.java:134)
      	at org.apache.solr.schema.FieldType.getFieldQuery(FieldType.java:529)
      	at org.apache.solr.search.SolrQueryParser.getFieldQuery(SolrQueryParser.java:153)
      	at org.apache.lucene.queryParser.QueryParser.Term(QueryParser.java:1449)
      	at org.apache.lucene.queryParser.QueryParser.Clause(QueryParser.java:1337)
      	at org.apache.lucene.queryParser.QueryParser.Query(QueryParser.java:1294)
      	at org.apache.lucene.queryParser.QueryParser.Clause(QueryParser.java:1341)
      	at org.apache.lucene.queryParser.QueryParser.Query(QueryParser.java:1265)
      	at org.apache.lucene.queryParser.QueryParser.TopLevelQuery(QueryParser.java:1254)
      	at org.apache.lucene.queryParser.QueryParser.parse(QueryParser.java:200)
      	at org.apache.solr.search.LuceneQParser.parse(LuceneQParserPlugin.java:78)
      	at org.apache.solr.search.QParser.getQuery(QParser.java:137)
      	at org.apache.solr.handler.component.QueryComponent.prepare(QueryComponent.java:99)
      	at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:174)
      	at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:131)
      	at org.apache.solr.core.SolrCore.execute(SolrCore.java:1321)
      	at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:341)
      	at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:244)
      	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1089)
      	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:365)
      	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
      	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
      	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712)
      	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
      	at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:211)
      	at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
      	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
      	at org.mortbay.jetty.Server.handle(Server.java:285)
      	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:502)
      	at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:835)
      	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:641)
      	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:202)
      	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:378)
      	at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:226)
      	at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)
      
      Steps to reproduce

      Use the following fetch function (as an example):

      {def $search_params = hash( 'query', $search_text,
      					'offset',		$view_parameters.offset,
      					'limit',		$page_limit,
      					'sort_by',		hash( 'score', 'desc' ),
      					'filter',		array( 'article/publish_date:[* TO *]' ),
      					'class_id',		$classFilter,
      					'spell_check', 	array( true() )
      			)
      }
      
      {def $search = fetch( 'ezfind', 'search', $search_params )}
      

      Attachments

        Activity

          People

            jv@ez.no jv@ez.no
            no@ez.no no@ez.no
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: