App Search returns zero results for queries with short terms after 8.4.2 update

After updating from Enterprise Search 8.4.1 to 8.4.2, queries with one or more short terms (one or two characters) return zero results. As this is new behavior from 8.4.2, I presume it's a bug?

Reindexing did not remediate the issue, but perhaps there's another workaround?

Edit: It's not just one and two letter words that make the query return zero results. In my dev environment, any query containing "norge" returns zero results while "jernbane" works fine, while in the test env "jernbane" works fine and "norge" returns zero. The app search and engine configuration is identical.

Tried to downgrade enterprise search to 8.4.1, which did not fix the issue, so I suspect it's an Elasticsearch bug/regression in 8.4.2.

Hey @leovalen , thanks for raising this, and sorry you're having an issue.

I'm struggling to reproduce - can you provide a document and a query that worked for 8.4.1 but is not working in 8.4.2?

Hi @Sean_Story, thanks for your reply. Queries containing common Norwegian conjunctions such as "av", "og" and "i" return zero results.

Eg the query gjennomf√łring av byutvikling should return the following document, but instead returns zero results:

[
  {
    "id": "15465",
    "type": "Evaluering",
    "title": "Grunneiersamarbeid for gjennomf√łring av byutvikling",
    "url": "https://kudos-core.test/dokument/grunneiersamarbeid-for-gjennomforing-av-byutvikling-2",
    "thumbnail": "https://kudos-core.test/thumbnails/994/994d81243e7a7d989f9b541eed5c92cbb2a14441a67c0ec1dbd5598a2a283066_thumbnail_512.jpg",
    "abstract": "Rapporten analyserer konkrete grunneiersamarbeid som er etablert for √• realisere en utvikling og en arealbruksendring som er √łnsket fra kommunens side ‚Äď dvs. som er nedfelt i vedtatte kommunale arealplaner. Rapporten viser konkrete samarbeidsmodeller og diskuterer en rekke detaljer mht. initiativ, prosess, samarbeidsformer, hvordan akt√łrene velger √• fordele rettigheter og plikter dem imellom, samt formalisering av samarbeid, hvordan eiendommene verdsettes og verdi√łkning h√•ndteres.",
    "plaintext": "Berit Nordahl\nprosjektleder\n\n1\n\n\fInnhold\nFORORD  1\nEMNEORD: .. 3\nSAMMENDRAG . 4\nSUMMARY  6\n1 GRUNNEIERSAMARBEID FOR GJENNOMF√ėRING AV BYUTVIKLING  8\nGRUNNEIERSAMARBEID ‚Äď EN HJELP TIL √Ö F√Ö FORTGANG I FORTETTING OG\nTRANSFORMASJONSPROSESSER 8\nEIENDOMMENES VERDI N√Ö OG I FRAMTIDEN .. 9\nFRAMGANGSM√ÖTE OG RAPPORTENS OPPBYGGING . 10\n2\n\nDEFINISJONER, FRAMGANGSM√ÖTE OG TREKK VED DATAMATERIALET.. 12\n\nDEFINISJONER . 12\nDATAMATERIALET . 13\n3 PLANLEGGING SOM VISJONSBYGGING OG PLANLEGGING SOM FORDELING AV\nPLIKTER OG RETTIGHETER . 16\nVISJONER OG MULIGHETSROM VERSUS RETTIGHETER .. 16\nREKKEF√ėLGEBESTEMMELSER ‚Äď PLIKTER SOM F√ėLGER RETTIGHETER  17\nVISJON MED √ėKONOMISK REALISME .. 19\nPROSESSEN ‚Äď KOMMUNENS ROLLE  19\n4\n\nGRUNNEIERSAMARBEDETS RETTSLIGE RAMMER - PROFESJONALITET OG TILLIT 20\n\nN√ÜRMERE OM VERDSETTINGSPRINSIPPER OG VERDI√ėKNING:  21\nHVOR LANGT INN I UTVIKLINGSPROSESSEN  22\nN√ÜRMERE OM PROSJEKTGJENNOMF√ėRINGEN ‚Äď TILTAK FOR √Ö STYRKE GRUNNEIERSAMARBEIDET  25\n5\n\nOPPSUMMERING OG ANBEFALINGER . 29\n\nOPPSUMMERING . 29\nANBEFALINGER .. 30\nREFERANSER . 35\nVEDLEGG - CASEGJENNOMGANG . 36\n\n2\n\n\fEMNEORD:\nKnutepunktsfortetting\nOmr√•deutvikling\nUtbyggere\nGrunneiere\nPlan og bygningsloven\nTillit\nGratispassasjer\n\n3\n\n\fSAMMENDRAG\nBakgrunnen for denne rapporten er utfordringer knyttet til kraftig knutepunktsforetting og\nkvartalsomdanning. For √• n√• FNs klimam√•l har vekst gjennom fortetting v√¶rt p√• den politiske\nagendaen i mer enn to ti√•r. √Ö gjennomf√łre planer om fortetting og transformasjon viser seg √• v√¶re\nen utfordrende oppgave for kommunene, spesielt dersom omr√•dene som skal omdannes er eid av\nmange ulike grunneiere og har tomter som er festet bort eller leietakere med lange kontrakter. Det\nkan v√¶re fristende for kommunene √• avvente at eier-konstellasjonen i omr√•det endrer seg og et\nst√łrre utbyggingsforetak kj√łper opp en eller flere eiendommer i omr√•det og driver prosessen\nframover. En alternativ strategi er at grunneierne i omr√•det selv etablerer et samarbeid med tanke\np√• √• komme i gang med en utbygging.\nDenne rapporten analyserer konkrete grunneiersamarbeid som er etablert for √• realisere en\nutvikling og en arealbruksendring som er √łnsket fra kommunens side ‚Äď dvs. som er nedfelt i\nvedtatte kommunale arealplaner. Rapporten viser konkrete samarbeidsmodeller og diskuterer en\nrekke detaljer mht. initiativ, prosess, samarbeidsformer, hvordan akt√łrene velger √• fordele\nrettigheter og plikter dem imellom, samt formalisering av samarbeid, hvordan eiendommene\nverdsettes og verdi√łkning h√•ndteres.\nEn forenklet tidslinje for eiendomsutviklingsprosessen kan deles inn i tre faser. F√łrste fase er n√•r\ninteressen for utvikling tar form. Ofte er dette initiert og inspirert av kommunens visjoner for omr√•det\nslik dette er gjengitt i overordnede arealplaner, og slik det er konkretisert i mulighetsstudier og ulike\ntyper analyser av omr√•det og omgivelsene rundt. Andre fase er utviklingsfasen: da har grunneier\nbesluttet √• utvikle og g√•r i dialog med kommunen om rammer og betingelser med tanke p√• √• lage\nen reguleringsplan for omr√•det. Fasen avsluttes med vedtatt juridisk bindende regulering for\nomr√•det. Tredje og siste fase er selve byggefasen med rammes√łknad, forh√•ndssalg, prosjektering,\nbygging, ferdigstilling og sluttf√łring av salgene. Det skjer en betydelig verdi√łkning i arealene\nallerede i fase 1, selv om den er latent og beheftet med stor usikkerhet. I fase to konkretiseres\nrammene for utviklingen og usikkerhet om framdrift og betingelser avklares og verdien p√• arealene\n√łkes betraktelig nettopp fordi usikkerheten om den framtidige h√łyere og bedre utnyttingen er\nredusert. Grunneiersamarbeid er en mulighet for grunneier til √• ta del i verdistigningen i alle tre\nfasene. Men som rapporten velger de fleste grunneiersamarbeidene √• selge til en profesjonell\nutbygger etter endt fase 2. Gjennomgangen viser ogs√• at e viktig oppgave for\ngrunneiersamarbeider er √• regulere den enkeltes plikter og rettigheter, spesielt med hensyn til n√•r\nden enkelte kan ¬ęhoppe av¬Ľ prosessen.\nRapporten er delt i 5 deler og et vedlegg: Del1 1 trekker opp rammene for grunneiersamarbeid og\nprinsipielle aspekter ved samarbeidene som er studert\nDel 2 gir en kort gjennomgang av definisjoner, framgangsm√•te og trekk ved datamaterialet. 8\ngrunneiersamarbeider er presentert.",
    "isbn": "9788283092943",
    "authors": [
      "Berit Irene Nordahl",
      "Jan Willy F√łreland",
      "Marit Ekne Ruud"
    ],
    "actors": [
      "Kommunal- og moderniseringsdepartementet",
      "NIBR"
    ],
    "publication_year": "2020",
    "published_at": "2020-01-13T08:29:18.000000Z",
    "time_decay": "0.9040232192659343",
    "analysis_criteria": [
      "treffsikkerhet",
      "Konsekvens"
    ],
    "instrument": [
      "samarbeid"
    ],
    "topic": [
      "byutvikling"
    ]
  }
]

(I've truncated the plaintext field, but it appears to be the query words and not the document content that trigger the apparent bug).

Perhaps it's something specific to the engine/results/tuning configuration, in which case I can post the details.

@leovalen thanks, this is helpful.

I'm still not reproducing.

Some follow-up questions then:

  1. What language did you select for your engine (I tested with Universal)
  2. What do you have set for Relevance Tuning? (I am using the default)
  3. Do you have any weights, boosts, or search fields specified in your query or set by default for your engine?
  1. Universal
  2. 4
  3. Yes, and one of them seems to be triggering the error.

I did some troubleshooting with the Search Explain API, which returns the following query for gjennomf√łring av byutvikling:

{
  "query": {
    "bool": {
      "must": {
        "function_score": {
          "boost_mode": "sum",
          "score_mode": "sum",
          "query": {
            "bool": {
              "must": [
                {
                  "bool": {
                    "should": [
                      {
                        "multi_match": {
                          "query": "gjennomf√łring av byutvikling",
                          "minimum_should_match": "3<-1 3<75%",
                          "type": "cross_fields",
                          "fields": [
                            "plaintext^1.0",
                            "plaintext.stem^0.95",
                            "plaintext.prefix^0.1",
                            "plaintext.joined^0.75",
                            "plaintext.delimiter^0.4",
                            "abstract^2.0",
                            "abstract.stem^1.9",
                            "abstract.prefix^0.2",
                            "abstract.joined^1.5",
                            "abstract.delimiter^0.8",
                            "title^5.0",
                            "title.stem^4.75",
                            "title.prefix^0.5",
                            "title.joined^3.75",
                            "title.delimiter^2.0",
                            "actors^2.0",
                            "actors.stem^1.9",
                            "actors.prefix^0.2",
                            "actors.joined^1.5",
                            "actors.delimiter^0.8",
                            "publication_year^3.5",
                            "publication_year.stem^3.325",
                            "publication_year.prefix^0.35",
                            "publication_year.joined^2.625",
                            "publication_year.delimiter^1.4",
                            "subtitle^2.0",
                            "subtitle.stem^1.9",
                            "subtitle.prefix^0.2",
                            "subtitle.joined^1.5",
                            "subtitle.delimiter^0.8",
                            "topic^3.0",
                            "topic.stem^2.85",
                            "topic.prefix^0.3",
                            "topic.joined^2.25",
                            "topic.delimiter^1.2",
                            "authors^2.0",
                            "authors.stem^1.9",
                            "authors.prefix^0.2",
                            "authors.joined^1.5",
                            "authors.delimiter^0.8",
                            "id^1.0"
                          ]
                        }
                      },
                      {
                        "multi_match": {
                          "query": "gjennomf√łring av byutvikling",
                          "minimum_should_match": "3<-1 3<75%",
                          "type": "best_fields",
                          "fuzziness": "AUTO",
                          "prefix_length": 2,
                          "fields": [
                            "plaintext.stem^0.1",
                            "abstract.stem^0.2",
                            "title.stem^0.5",
                            "actors.stem^0.2",
                            "publication_year.stem^0.35",
                            "subtitle.stem^0.2",
                            "topic.stem^0.3",
                            "authors.stem^0.2"
                          ]
                        }
                      }
                    ]
                  }
                }
              ],
              "should": [
                {
                  "multi_match": {
                    "query": "gjennomf√łring av byutvikling",
                    "type": "phrase",
                    "boost": 9,
                    "slop": 0,
                    "fields": [
                      "plaintext.stem^0.95",
                      "abstract.stem^1.9",
                      "title.stem^4.75",
                      "actors.stem^1.9",
                      "publication_year.stem^3.325",
                      "subtitle.stem^1.9",
                      "topic.stem^2.85",
                      "authors.stem^1.9",
                      "id^1.0"
                    ]
                  }
                }
              ]
            }
          },
          "functions": [
            {
              "script_score": {
                "script": {
                  "source": "Math.max(_score * ((3.0 * (doc.containsKey(\"time_decay.float\") && !doc[\"time_decay.float\"].empty ? doc[\"time_decay.float\"].value : 1))) - _score, 0)"
                }
              }
            }
          ]
        }
      }
    }
  },
  "sort": [
    {
      "_score": "desc"
    },
    {
      "_doc": "desc"
    }
  ],
  "highlight": {
    "fragment_size": 300,
    "type": "plain",
    "number_of_fragments": 1,
    "order": "score",
    "encoder": "html",
    "require_field_match": false,
    "fields": {
      "plaintext.stem": {
        "fragment_size": 150
      },
      "plaintext.prefix": {
        "fragment_size": 150
      }
    },
    "highlight_query": {
      "multi_match": {
        "query": "gjennomf√łring av byutvikling",
        "fields": [
          "plaintext.stem",
          "plaintext.prefix"
        ]
      }
    }
  },
  "size": 10,
  "from": 0,
  "timeout": "30000ms",
  "_source": [
    "title",
    "plaintext",
    "id"
  ]
}

Which again returns the following error from the Elasticsearch search API for App Search endpoint:

{
  "error": {
    "root_cause": [
      {
        "type": "illegal_argument_exception",
        "reason": "totalTermFreq must be at least docFreq, totalTermFreq: 2688, docFreq: 2692"
      },
      {
        "type": "illegal_argument_exception",
        "reason": "totalTermFreq must be at least docFreq, totalTermFreq: 1589, docFreq: 1593"
      }
    ],
    "type": "search_phase_execution_exception",
    "reason": "all shards failed",
    "phase": "query",
    "grouped": true,
    "failed_shards": [
      {
        "shard": 0,
        "index": ".ent-search-engine-documents-kudos-development",
        "node": "5rlj7jwNRcOVNuIURqPYzw",
        "reason": {
          "type": "illegal_argument_exception",
          "reason": "totalTermFreq must be at least docFreq, totalTermFreq: 2688, docFreq: 2692"
        }
      },
      {
        "shard": 1,
        "index": ".ent-search-engine-documents-kudos-development",
        "node": "5rlj7jwNRcOVNuIURqPYzw",
        "reason": {
          "type": "illegal_argument_exception",
          "reason": "totalTermFreq must be at least docFreq, totalTermFreq: 1589, docFreq: 1593"
        }
      }
    ],
    "caused_by": {
      "type": "illegal_argument_exception",
      "reason": "totalTermFreq must be at least docFreq, totalTermFreq: 2688, docFreq: 2692",
      "caused_by": {
        "type": "illegal_argument_exception",
        "reason": "totalTermFreq must be at least docFreq, totalTermFreq: 2688, docFreq: 2692"
      }
    }
  },
  "status": 400
}

This seems to be the issue - ‚ÄútotalTermFreq must be at least docFreq‚ÄĚ error after upgrading to 8.4.2 ¬∑ Issue #90275 ¬∑ elastic/elasticsearch ¬∑ GitHub
Going to be fixed in 8.4.3 according to the thread :slight_smile:

Temporary workaround is to reindex in a previous version of Elasticsearch (8.4.1 or earlier).

1 Like

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.