ES-Search empfohlen

1. Übersicht
Die Suche erfordert im Allgemeinen die Funktion „Suchempfehlung“ oder „Suchvervollständigung“, dh eine automatische Vervollständigung oder Fehlerkorrektur wird während des Suchvorgangs durch Benutzereingaben durchgeführt. Um die Übereinstimmungsgenauigkeit von Suchdokumenten zu verbessern und dann das Sucherlebnis des Benutzers zu verbessern, wird dies vorgeschlagen.

##Vier Arten von Suggestern
2. Term Suggester
Term Suggester stimmen, wie der Name schon sagt, nur mit den vorgeschlagenen Wörtern überein, die auf einem einzelnen Begriff nach dem Tokenizer basieren, und berücksichtigen nicht die Beziehung zwischen mehreren Begriffen

json POST <index>/_search
{
    
    
    "suggest": {
    
    
        "<suggest_name>": {
    
    
            "text": "<search_content>",
            "term": {
    
    
                "suggest_mode": "<suggest_mode>",
                "field": "<field_name>"
            }
        }
    }
}

Optionen:

  • Text: Der Text, nach dem der Benutzer gesucht hat
  • Feld: Aus welchem ​​Feld werden empfohlene Daten ausgewählt?
  • Analysator: Welcher Tokenizer soll verwendet werden?
  • Größe: Die maximale Anzahl von Ergebnissen, die für jeden Vorschlag zurückgegeben werden sollen
  • Sortieren: So sortieren Sie nach den Eingabeaufforderungselementen. Der Parameterwert kann nur die folgenden zwei Aufzählungen sein: Bewertung: Bewertung > Worthäufigkeit > Begriff selbst Häufigkeit: Worthäufigkeit > Bewertung > Begriff selbst
  • suggest_mode: Der empfohlene Modus zum Suchen und Empfehlen, und der Parameterwert ist auch eine Aufzählung:
    Fügen Sie hier eine Bildbeschreibung ein
  • max_edits: Der maximale Versatzabstand, den ein Kandidatenvorschlag haben kann, um als Vorschlag betrachtet zu werden. Kann nur ein Wert zwischen 1 und 2 sein. Jeder andere Wert führt dazu, dass ein fehlerhafter Anforderungsfehler ausgelöst wird. Der Standardwert ist 2
  • prefix_length: Wenn das Präfix übereinstimmt, die Mindestanzahl der Zeichen, die erfüllt sein müssen
  • minwordlength: die Mindestanzahl der enthaltenen Wörter
  • mindocfreq: Mindestdokumenthäufigkeit
  • maxtermfreq: maximale Termfrequenz

3. Phrasenvorschlagsfunktion
Im Vergleich zur Begriffsvorschlagsfunktion bezieht sich die Phrasenvorschlagsfunktion auf den Kontext des vorgeschlagenen Textes, d und Häufigkeit.

Optionen:

  • realworderror_likelihood: Der Standardwert dieser Option ist 0,95. Diese Option teilt Elasticsearch mit, dass 5 % der Begriffe im Index
    falsch geschrieben sind. Das heißt, je niedriger der Wert dieses Parameters wird, desto mehr Begriffe, die im Index vorhanden sind, werden von Elasticsearch als falsch geschrieben behandelt, obwohl sie korrekt sind
  • max_errors: Der maximale Prozentsatz der Begriffe, die als falsch geschrieben gelten, um Korrekturen zu bilden. Der Standardwert ist 1
  • Vertrauen: Der Standardwert ist 1,0 und der Maximalwert ebenfalls. Dieser Wert fungiert als Schwelle im Verhältnis zum Empfehlungswert. Es werden nur Vorschläge angezeigt, deren Punktzahl über diesem Wert liegt. Bei einer Konfidenz von 1,0 werden beispielsweise
    nur Vorschläge zurückgegeben, deren Punktzahl höher ist als die der Eingabephrase
  • collate: Weist Elasticsearch
    an, jeden Vorschlag anhand der angegebenen Abfrage zu prüfen, um Vorschläge zu bereinigen, für die kein passendes Dokument im Index vorhanden ist. In diesem Fall handelt es sich um eine Match-Abfrage. Da es sich bei dieser Abfrage um eine Vorlagenabfrage handelt, wird die Suchabfrage derzeit unter Parameter in der Abfrage vorgeschlagen. Weitere Felder können im „params“-Objekt unter der Abfrage hinzugefügt werden. Wenn der Parameter „prune“ auf „true“ gesetzt ist, fügen wir der Antwort ein Feld „collate_match“ hinzu, das angibt, ob in den vorgeschlagenen Ergebnissen eine Übereinstimmung für alle korrigierten Schlüsselwörter vorliegt
  • Directgenerator:Phrase Suggester verwendet einen Kandidatengenerator, um für jeden Begriff im angegebenen Text eine Liste möglicher Begriffe zu erstellen. Ein einzelner Kandidatengenerator ähnelt dem Aufruf des Begriffsvorschlags für jeden einzelnen Begriff im Text. Die Ausgabe des Generators wird dann mit den vorgeschlagenen Kandidaten kombiniert, um diese zu bewerten. Derzeit wird nur ein Kandidatengenerator unterstützt, der Direktgenerator. Es wird empfohlen, dass die API eine Liste von Generatoren direkt unter dem Schlüsselgenerator akzeptiert; jeder Generator in der Liste wird für jedes Element im Rohtext aufgerufen.

4. Der Vervollständigungsvorschlag
vervollständigt und vervollständigt automatisch und unterstützt drei Arten von Abfragen [Präfixabfrage (Präfix), Fuzzy-Abfrage (Fuzzy) und Abfrage mit regulären Ausdrücken (Regex)]. Das Hauptanwendungsszenario ist „Auto Completion“. In diesem Szenario muss jedes Mal, wenn ein Benutzer ein Zeichen eingibt, eine Abfrageanforderung an das Backend gesendet werden, um ein passendes Element zu finden. Wenn die Benutzereingabegeschwindigkeit hoch ist, ist die Antwortgeschwindigkeit des Backends relativ streng. Daher verwendet es in Bezug auf die Implementierung eine andere Datenstruktur als die beiden vorherigen Suggester. Der Index wird nicht durch Invertierung vervollständigt, sondern die analysierten Daten werden in FST codiert und zusammen mit dem Index gespeichert. Bei einem Index im offenen Zustand wird FST von ES in den Speicher geladen und die Präfixsuchgeschwindigkeit ist extrem hoch. FST kann jedoch nur für die Präfixsuche verwendet werden, was auch die Einschränkung von Completion Suggester darstellt.

  • Vervollständigung: Ein einzigartiger Typ von ES, der speziell für Vorschläge bereitgestellt wird, auf dem Speicher basiert und eine hohe Leistung aufweist.

  • Präfixabfrage: Suchaufforderung basierend auf der Präfixabfrage, der am häufigsten verwendeten Suchempfehlungsabfrage.

  • Präfix: Client-Suchbegriff

  • Feld: Feld mit vorgeschlagenen Wörtern

  • Größe: die Anzahl der vorgeschlagenen Wörter, die zurückgegeben werden sollen (Standard 5)

  • skip_duplicates: Gibt an, ob doppelte Vorschläge herausgefiltert werden sollen. Der Standardwert ist „false“.

Fuzzy-Abfrage

  • Unschärfe: zulässiger Offset, Standardwert automatisch
  • Transpositionen: Wenn auf „true“ gesetzt, wird die Transposition als eine Änderung statt als zwei gezählt, der Standardwert ist „true“.
  • min_length: die minimale Eingabelänge vor der Rückgabe von Fuzzy-Vorschlägen, Standard 3
  • prefix_length: Mindestlänge der Eingabe (prüft nicht auf Fuzzy-Alternativen) ist standardmäßig 1
  • unicode_aware: Wenn „true“, werden alle Metriken wie Fuzzy-Edit-Abstand, Transposition und Länge in Unicode-Codepunkten und nicht in Bytes angegeben. Dies ist etwas langsamer als Rohbytes und ist daher standardmäßig auf „false“ gesetzt.
  • Regex-Abfrage: Reguläre Ausdrücke können zur Darstellung von Präfixen verwendet werden, dies wird jedoch nicht empfohlen

5. Der Kontextvorschlag
vervollständigt den Vorschlag. Er berücksichtigt alle Dokumente im Index. Wenn wir jedoch intelligente Empfehlungen aussprechen, ist es im Allgemeinen am besten, bestimmte Bedingungen zu filtern, und es ist möglich, die Gewichtung für bestimmte Merkmale zu erhöhen.

  • Kontexte: Kontextobjekt, kann mehrere definieren

  • Name: Der Name des Kontexts, der zur Unterscheidung verschiedener Kontextobjekte im selben Index verwendet wird. Bei der Abfrage müssen Sie den aktuellen Namen angeben

  • Typ: Der Typ des Kontextobjekts. Derzeit werden zwei Typen unterstützt: Kategorie und Geo, die zur Klassifizierung des vorgeschlagenen Elements bzw. zur Angabe des geografischen Standorts verwendet werden.

  • boost: Gewichtungswert, der zur Verbesserung des Rankings verwendet wird

  • Pfad: Wenn kein Pfad vorhanden ist, entspricht dies der Angabe des Felds context.name beim PUT-Daten. Wenn der Pfad im Mapping angegeben wird, ist er beim PUT-Daten nicht erforderlich, da das Mapping einmalig ist und das PUT-Daten ein häufiger Vorgang ist , was den Code vereinfacht.

Supongo que te gusta

Origin blog.csdn.net/qq_38747892/article/details/129671346
Recomendado
Clasificación