Frage

Also sagen wir, ich habe einen ElasticSearch-Index, der so definiert ist:

generasacodicetagpre.

Wenn ich nach "Foo-Organisationen mit dem Schneeballanalysator suche, passen beide Keywords wie erwartet zusammen:

generasacodicetagpre.

Wenn ich aber nur "Organisationen suche, bekomme ich kein Ergebnis, was sehr seltsam ist:

generasacodicetagpre.

Wenn ich jedoch nach "Bars" suche, trifft es immer noch:

generasacodicetagpre.

Ich denke, der Unterschied zwischen "Bar" und "Organisation" ist, dass "Organisation" in "Organ" stammt, während "Bar" an sich selbst stammt.Aber wie bekomme ich das richtige Verhalten, damit die 2. Suche trifft?

War es hilfreich?

Lösung

Text "Foo BAR Organization" wird zweimal indexiert - im Feld Text und im Feld _all .Das Feld text verwendet Snowball Analyzer, und das Feld _all verwendet den Standardanalysator.Daher enthält das Feld _all Token: "foo", "bar" und "organisation".Während des Suchvorgabe-Snowball Analyzer konvertiert "Foo" in "Foo", "Bars" in "Bar" und "Organisation" in "Orgel".Also, Wörter "foo" und "bars" in der Abfrage übereinstimmen Sie dem Testdatensatz und dem Begriff "Organisation" nicht.Die Hervorhebung wird pro Feldbasis unabhängig von der Suche durchgeführt, weshalb Word "Organisation" im ersten Ergebnis hervorgehoben wird.

Andere Tipps

Es ist besser, Analysator bei Indexzeit als Suchzeit zu verwenden ..Map Ihr Textfeld an den Schneekugelanalysator und dann index.Dies wird einige Token für die Organisation erstellen, die Organisationen umfasst.Es funktioniert für mich

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top