Heim > Datenbank > MySQL-Tutorial > Warum schlägt meine MySQL-Volltextsuche aufgrund unzureichender Daten und Stoppwörter fehl?

Warum schlägt meine MySQL-Volltextsuche aufgrund unzureichender Daten und Stoppwörter fehl?

Susan Sarandon
Freigeben: 2024-12-04 15:28:12
Original
418 Leute haben es durchsucht

Why is My MySQL Fulltext Search Failing with Insufficient Data and Stop Words?

Fehler bei der MySQL-Volltextsuche: Unzureichende Daten und Stoppwörter

Das Problem

Beim Versuch, Volltextsuchen durchzuführen In einer MySQL-Tabelle mit Produktinformationen werden keine Ergebnisse zurückgegeben, obwohl übereinstimmende Begriffe vorhanden sind. Beispielsweise liefert eine Suche nach „Stift“ oder „ein Stift“ in der Spalte „Produkt“ keine Ergebnisse.

Die Untersuchung

Bei der Untersuchung des Tabellenschemas stellte sich heraus, dass Es wurde festgestellt, dass die Spalte „Produkt“ als FULLTEXT-Index definiert war. Allerdings enthielt die Tabelle nur zwei Datenzeilen, die die Begriffe „Stift“ und „ein Stift“ enthielten.

Die Lösung

1. Zunehmende Datenvielfalt:

Volltextsuchalgorithmen benötigen eine ausreichende Datenmenge, um sinnvolle Muster zu erkennen. Mit nur zwei Datenzeilen war der Algorithmus nicht in der Lage, zwischen häufigen und ungewöhnlichen Wörtern zu unterscheiden, was zu schlechten Suchergebnissen führte.

Beispiel:

CREATE TABLE testproduct
(
    Id                VARCHAR(16),
    prod_name           TEXT,
    ProductIdType     VARCHAR(8),
  PRIMARY KEY (Id),
  FULLTEXT (prod_name)
) ENGINE=MyISAM;

insert into testproduct (id,prod_name,productidtype) values ('B00005N5PF','one pen and a good price for a pen','ASIN');
insert into testproduct (id,prod_name,productidtype) values ('B570J5XS3C',null,'ASIN');
Nach dem Login kopieren

Durch Einfügen mehr Daten mit einer Vielzahl von Begriffen und Phrasen, der Algorithmus kann Wörter besser klassifizieren und die Suchgenauigkeit verbessern.

2. Stoppwörter überschreiben:

MySQL verwaltet eine Liste gebräuchlicher Wörter, sogenannte Stoppwörter, die normalerweise von Volltextsuchen ausgeschlossen werden. In einigen Fällen können Stoppwörter jedoch für die Suche relevant sein.

Beispiel:

-- Disable stopword filtering
SET ft_stopword_file = '';

-- Rebuild FULLTEXT indexes
ALTER TABLE testproduct REBUILD INDEX prod_name;
Nach dem Login kopieren

Durch Überschreiben der Standard-Stoppwortliste werden relevante Begriffe wie „Jahre“ angezeigt „ oder „Punktzahl“ können in die Suchergebnisse aufgenommen werden.

3. Verwendung der booleschen und natürlichen Sprachmodi:

Der boolesche Modus erfordert genaue Übereinstimmungen, während der natürliche Sprachmodus Variationen und Synonyme zulässt. Die Verwendung des Modus für natürliche Sprache kann die Suchergebnisse erweitern.

Beispiel:

SELECT * FROM testproduct WHERE MATCH(prod_name) AGAINST('+harpoon +article' IN NATURAL LANGUAGE MODE);
Nach dem Login kopieren

Durch die Verwendung dieser Techniken kann die Volltextsuchfunktion verbessert werden, um genaue Ergebnisse zu liefern und aussagekräftige Ergebnisse für ein breiteres Spektrum an Abfragen.

Das obige ist der detaillierte Inhalt vonWarum schlägt meine MySQL-Volltextsuche aufgrund unzureichender Daten und Stoppwörter fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage