Error on searches containing specific character pattern

Created on 31 August 2020, almost 4 years ago
Updated 3 July 2023, 12 months ago

Problem/Motivation

.
Searches that match a certain pattern cause an error.

Steps to reproduce

Use a search term that contains the pattern "1a1 aa".
This pattern of number-char-number-space-char-char need not be at the start of the string, it can be at any point.
Tested using Solr 8.5.1

Additional patterns that error

  • 1a1 1aa
  • 1a1 11

Similar patterns that don't error

  • 1a11 aa
  • 11a1 aa
  • 1a1aa
  • 11a11 aa

Example error message

[31-Aug-2020 12:36:00 Pacific/Auckland] Uncaught PHP Exception Drupal\search_api_solr\SearchApiSolrException: "An error occurred while trying to search with Solr: {
  "error":{
    "msg":"0",
    "trace":"java.lang.ArrayIndexOutOfBoundsException: 0\n\tat org.apache.lucene.util.QueryBuilder.newSynonymQuery(QueryBuilder.java:653)\n\t
    at org.apache.solr.parser.SolrQueryParserBase.newSynonymQuery(SolrQueryParserBase.java:617)\n\t
    at org.apache.lucene.util.QueryBuilder.analyzeGraphBoolean(QueryBuilder.java:533)\n\t
    at org.apache.lucene.util.QueryBuilder.createFieldQuery(QueryBuilder.java:320)\n\t
    at org.apache.lucene.util.QueryBuilder.createFieldQuery(QueryBuilder.java:240)\n\t
    at org.apache.solr.parser.SolrQueryParserBase.newFieldQuery(SolrQueryParserBase.java:524)\n\t
    at org.apache.solr.parser.QueryParser.newFieldQuery(QueryParser.java:62)\n\t
    at org.apache.solr.parser.SolrQueryParserBase.getFieldQuery(SolrQueryParserBase.java:1122)\n\t
    at org.apache.solr.parser.QueryParser.MultiTerm(QueryParser.java:593)\n\t
    at org.apache.solr.parser.QueryParser.Query(QueryParser.java:142)\n\t
    at org.apache.solr.parser.QueryParser.Clause(QueryParser.java:282)\n\t
    at org.apache.solr.parser.QueryParser.Query(QueryParser.java:162)\n\t
    at org.apache.solr.parser.QueryParser.Clause(QueryParser.java:282)\n\t
    at org.apache.solr.parser.QueryParser.Query(QueryParser.java:162)\n\t
    at org.apache.solr.parser.QueryParser.Clause(QueryParser.java:282)\n\t
    at org.apache.solr.parser.QueryParser.Query(QueryParser.java:162)\n\t
    at org.apache.solr.parser.QueryParser.TopLevelQuery(QueryParser.java:131)\n\t
    at org.apache.solr.parser.SolrQueryParserBase.parse(SolrQueryParserBase.java:260)\n\t
    at org.apache.solr.search.LuceneQParser.parse(LuceneQParser.java:49)\n\t
    at org.apache.solr.search.QParser.getQuery(QParser.java:174)\n\t
    at org.apache.solr.handler.component.QueryComponent.prepare(QueryComponent.java:160)\n\t
    at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:302)\n\t
    at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:211)\n\t
    at org.apache.solr.core.SolrCore.execute(SolrCore.java:2596)\n\t
    at org.apache.solr.servlet.HttpSolrCall.execute(HttpSolrCall.java:799)\n\t
    at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:578)\n\t
    at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:419)\n\t
    at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:351)\n\t
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1602)\n\t
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:540)\n\t
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)\n\t
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)\n\t
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)\n\t
    at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)\n\t
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1711)\n\t
    at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)\n\t
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1347)\n\t
    at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)\n\t
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:480)\n\t
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1678)\n\t
    at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)\n\t
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1249)\n\t
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)\n\t
    at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:220)\n\t
    at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:152)\n\t
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)\n\t
    at org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:335)\n\t
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)\n\t
    at org.eclipse.jetty.server.Server.handle(Server.java:505)\n\t
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:370)\n\t
    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:267)\n\t
    at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)\n\t
    at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)\n\t
    at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117)\n\t
    at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)\n\t
    at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)\n\t
    at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)\n\t
    at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)\n\t
    at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)\n\t
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:781)\n\t
    at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:917)\n\t
    at java.lang.Thread.run(Thread.java:748)\n",
    "code":500}}
πŸ› Bug report
Status

Active

Version

4.0

Component

Code

Created by

πŸ‡³πŸ‡ΏNew Zealand AndyD328 Lyttelton, NZ πŸ‡³πŸ‡Ώ

Live updates comments and jobs are added and updated live.
Sign in to follow issues

Comments & Activities

Not all content is available!

It's likely this issue predates Contrib.social: some issue and comment data are missing.

Production build 0.69.0 2024