2 Stimmen

Wie kann ich die MySQL-Volltextindizierung dazu bringen, Url-Strings zu ignorieren, insbesondere die Erweiterung

Ich indiziere Zeichenketten, die URLs in MySQL Fulltext enthalten... aber ich möchte nicht, dass die URLs in den Ergebnissen enthalten sind.

Wenn ich zum Beispiel nach "PHP" oder "HTML" suche, erhalte ich Einträge wie "Ibiza Angels Massage Company siehe funandfrolicks". php "... bestenfalls eine hedonistische Ablenkung.

Ich kann keine Beispiele für das Hinzufügen regulärer Ausdrücke zur Stoppwortliste finden.

Die andere Sache, die ich dachte an (und scheiterte an) ist die Erstellung der Volltext-SQL, und die Verringerung der Wort-Beitrag... jedoch in der folgenden SQL, der Relevanz-Wert nicht ändern.

SELECT title, content,match(title,content) against('+PHP >".php"' IN BOOLEAN MODE)
FROM tb_feed 
WHERE match(title,content) against('PHP >".php"' IN BOOLEAN MODE) 
ORDER BY published DESC LIMIT 10;

Eine Alternative ist eine unübersichtliche SQL-Anweisung mit der zusätzlichen Bedingung ...

WHERE ... IF(content REGEXP '.php', content REGEXP '(^| )php', 1) ...

Was ist die beste Lösung?

1voto

Wenn die Anzahl der Ergebnisse überschaubar ist, können Sie sich dafür entscheiden, die Wörter, die Sie ignorieren möchten, nicht anzuzeigen. Zum Beispiel .php oder .html. Dies ist sehr schnell zu bewerkstelligen, erfordert aber mehr Speicher als nötig.

Eine andere Lösung besteht darin, ein weiteres Feld mit den Schlüsselwörtern zu erstellen, nach denen Sie suchen möchten. In diesem Feld lassen Sie die URLs und alle anderen Schlüsselwörter, die nicht erwünscht sind, weg. Diese Lösung benötigt nur wenig Zeit zum Schreiben, nimmt aber zusätzlichen Speicherplatz auf der Festplatte in Anspruch.

Die bessere Lösung ist, eine weitere Tabelle mit dem Namen Schlüsselwort (oder ähnlich) zu erstellen. Wenn ein Benutzer eine Suchanfrage stellt, wird die Schlüsselworttabelle nach den angegebenen Schlüsselwörtern durchsucht. Die Schlüsselworttabelle wird durch Aufteilung der Eingabedaten beim Hochladen oder Abrufen der Inhalte gefüllt.

Diese letzte Option hat den Vorteil, dass sie möglicherweise schnell ist und die Daten kompakt sind, da die Schlüsselwörter nur einmal gespeichert werden und ein Index auf den Hauptinhaltsdatensatz zurückverweist. Sie ermöglicht eine intelligente Suche, wenn Sie dies wünschen.

0voto

phsiao Punkte 1497

Wenn Sie wollen, dass php/html nicht Teil der URL ist, ist eine einfache Möglichkeit, zu versuchen

like "% php %"
like "% html %"

Auf diese Weise muss php/html ein Wort in dem Satz sein.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X