[ https://issues.apache.org/jira/browse/SOLR-12243?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16836448#comment-16836448 ]
Michael Gibney commented on SOLR-12243: --------------------------------------- [~fmr], there are several issues relevant to the problem you've encountered: Multi-term synonyms invoke graphPhraseQuery, implemented for {{6.5 <= _version_ < 7.6}} as SpanNearQuery, which was not prone to exponential growth; but (also prior to 7.6) that SpanNearQuery was completely ignored. It's the latter problem (ignoring) that this issue (SOLR-12243) fixes. The exponential expansion is related to LUCENE-8531, which reverts LUCENE-7699 by changing the SpanNearQuery graph phrase query implementation back to the pre-6.5 MultiPhraseQuery implementation (when slop>0), for semantic compatibility reasons. MultiPhraseQuery is inherently susceptible to exponential expansion, so there is no workaround at the moment to fully support a high degree of synonym expansion in conjunction with slop>0. Regarding the manifestation of the problem as "single query taking down an entire solr-server", this should be mitigated starting in 8.1 (see SOLR-13336). Individual queries will still fail if expanded beyond a configurable threshold (number of clauses), but the type of systemic problem that you encountered will be prevented. Regarding a potential longer-term solution, it might be worth looking at LUCENE-8544. > Edismax missing phrase queries when phrases contain multiterm synonyms > ---------------------------------------------------------------------- > > Key: SOLR-12243 > URL: https://issues.apache.org/jira/browse/SOLR-12243 > Project: Solr > Issue Type: Bug > Security Level: Public(Default Security Level. Issues are Public) > Components: query parsers > Affects Versions: 7.1 > Environment: RHEL, MacOS X > Do not believe this is environment-specific. > Reporter: Elizabeth Haubert > Assignee: Steve Rowe > Priority: Major > Fix For: 7.6, 8.0 > > Attachments: SOLR-12243.patch, SOLR-12243.patch, SOLR-12243.patch, > SOLR-12243.patch, SOLR-12243.patch, SOLR-12243.patch, SOLR-12243.patch, > multiword-synonyms.txt, schema.xml, solrconfig.xml > > Time Spent: 10m > Remaining Estimate: 0h > > synonyms.txt: > {code} > allergic, hypersensitive > aspirin, acetylsalicylic acid > dog, canine, canis familiris, k 9 > rat, rattus > {code} > request handler: > {code:xml} > <requestHandler name="/test_qparse_error" class="solr.SearchHandler"> > <lst name="defaults"> > <!-- Query settings --> > <str name="defType">edismax</str> > <str name="tie"> 0.4</str> > <str name="qf">title^100</str> > <str name="pf">title~20^5000</str> > <str name="pf2">title~11</str> > <str name="pf3">title~22^1000</str> > <str name="df">text</str> > <!-- mm If two or fewer clauses exist, they all must match. > If three to five clauses exist, one can be missing. If six to eight clauses > exist, all but three must match. > If more than nine clauses exist, only require 30% to match.--> > <str name="mm">3<-1 6<-3 9<30%</str> > <str name="q.alt">*:*</str> > <str name="rows">25</str> > </lst> > </requestHandler> > {code} > Phrase queries (pf, pf2, pf3) containing "dog" or "aspirin" against the > above list will not be generated. > "allergic reaction dog" will generate pf2: "allergic reaction", but not > pf:"allergic reaction dog", pf2: "reaction dog", or pf3: "allergic reaction > dog" > "aspirin dose in rats" will generate pf3: "dose ? rats" but not pf2: "aspirin > dose" or pf3:"aspirin dose ?" > -- This message was sent by Atlassian JIRA (v7.6.3#76005) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org