Ich baue eine Suche nach einer Website, die eine Volltextsuche verwendet. Die Suche selbst funktioniert großartig, das ist nicht mein Problem. Ich zeichne die vom Benutzer bereitgestellten Schlüsselwörter (MATCH ... AGAINST ...) mit ANDs zusammen, so dass mehrere Wörter die Ergebnisse weiter einschränken. Jetzt weiß ich, dass bestimmte Stoppwörter nicht indiziert sind, und das ist für mich in Ordnung, ich möchte sie nicht wirklich als Auswahlkriterien verwenden. Wenn jedoch ein Stoppwort im Schlüsselwortsatz (vom Benutzer) bereitgestellt wird, werden alle Ergebnisse (wie erwartet) beendet, selbst wenn das Wort tatsächlich in einem bestimmten Textblock vorhanden ist.Ignorieren von MySQL Volltext Stoppwörter in Abfrage
Meine Frage: Gibt es eine Möglichkeit zu überprüfen, ob ein bestimmtes Wort zum Zeitpunkt der Abfrage ein Stoppwort ist? Meine bevorzugte Lösung wäre nur, das relevante Wort von den Suchkriterien auszuschließen (es ist mir egal, ob ein Benutzer Ergebnisse durch das Wort "weder" einschränken kann), ich möchte einfach nicht, dass MySQL eine leere Ergebnismenge als Benutzer zurückgibt vorausgesetzt, obwohl es in den Ergebnissen nicht existiert). Oder muss ich nur die Stoppwortliste leeren? Vielen Dank für jede Hilfe.
bearbeiten ---- Es tut mir leid, aber es gibt wirklich keine Code-Schnipsel für diese eine. Der Code funktioniert gut, eigentlich genau wie erwartet. Es ist eher ein logisches Problem, mit dem ich es zu tun habe. Aber als Beispiel in der Art und Weise der Erklärung:
kann sagen, es gibt drei Datensätze, welche die Worte umfassen (sind aber nicht beschränkt auf)
1: Apfel, Orange, Mango, Banane 2: Traube , Orange, Ananas, Mango 3: Kartoffel, Mango, Melone, Keira ritterlich
Wenn das vom Benutzer eingegebene Suchwort Mango ist, werden alle Ergebnisse korrekt zurückgegeben. Wenn die Wörter orange UND Mango sind, werden die Ergebnisse 1 und 2 (richtig) zurückgegeben. Nun, nehmen wir an, Banane ist ein Stoppwort (es ist nicht ... aber nehmen wir an, es ist), wenn die Suche nach Orange, Mango und Banane erfolgt, werden keine Ergebnisse zurückgegeben (weil Banane nicht im Volltextindex ist).
Was ich suche ist, wenn jemand anderes dieses Problem begegnet ist, und eine Möglichkeit hat, um es herum zu arbeiten. Art ein:
if 'banana' NOT STOP WORD match 'banana' against `words`. (OBVIOUSLY not real code).
Oder ... bin ich nur die Stoppwortliste fallen gehen zu müssen ...
was haben Sie versucht? Kannst du uns ein Beispiel geben? – jcho360
Scheint, als ob keine der Antworten wirklich das bekommen hat, was Sie gesucht haben. Sie könnten immer Anwendungscode schreiben, um Stoppwörter (sowie zu kurze Wörter) manuell aus Ihrer Abfrage herauszufiltern. Das werden wir wahrscheinlich tun. –
2017 und das gleiche Problem hier .. Scheint, dass Mysql Volltextsuche ist wirklich schlecht gestaltet und fehlt an grundlegenden Funktionen .. – jgr