全文検索を利用するサイトを検索しています。検索自体は素晴らしいです、それは私の問題ではありません。私はユーザー提供のキーワード(MATCH ... AGAINST ...)をANDで連結し、複数の単語が結果をさらに狭めるようにします。今、特定のストップワードが索引付けされていないことを知っています。それは私にとっては本当に選択基準として使用したくないということです。しかし、ストップワードが(ユーザーによって)キーワードセットに提供された場合、単語が実際に特定のテキストブロック内にあっても(期待どおり)すべての結果が強制終了されます。クエリでmysqlの全文ストップワードを無視する
私の質問:特定の単語がクエリの時点でストップワードかどうかを確認する方法はありますか?私の好みの解決方法は、関連する単語を検索条件から除外することです(ユーザが単語「どちらも」で結果を絞り込むことができても気にしません。MySQLを空の結果セットに戻すことは望ましくありません。たとえどちらも結果に存在しないとしても、それを提供した)。あるいは、ストップワードリストを空にしなければならないのでしょうか?助けてくれてありがとう。
編集---- 申し訳ありませんが、実際にはこれを提供するコードスニペットはありません。コードは正常に動作します。それは私が扱っている論理的な問題です。しかし、一例として、説明のために:リンゴ、オレンジ、マンゴー、バナナ 2:ブドウ
は、語を含む(がこれらに限定されない)
1を3つのレコードが存在すると言うことができます、オレンジ、パイナップル、マンゴー 3:ジャガイモ、マンゴー、メロン、キーラナイトリー
ユーザーが入力した検索語がmangoの場合、すべての結果が正しく返されます。単語がオレンジでmangoの場合、結果1と2が返されます(正しく)。今、バナナがストップワードであるとしましょう(それはないが、それを前提としましょう)、オレンジ、マンゴ、バナナの検索の場合、結果は返されません(バナナは全文索引に含まれていないためです)。
私が探しているのは、他の誰かがこの問題に遭遇し、その問題を回避する方法がある場合です。並べ替え:
if 'banana' NOT STOP WORD match 'banana' against `words`. (OBVIOUSLY not real code).
それとも...私はストップワードリストをドロップする必要がありますするつもりです...
何を試しましたか?いくつかの例を教えていただけますか? – jcho360
答えのどれも本当にあなたが探していたものを得ていないようです。あなたはいつでもあなたの質問からストップワード(と短すぎる単語)を手作業で除外するためのアプリケーションコードを書くことができます。それはおそらく私たちがやることです。 –
2017と同じ問題があります。mysqlのフルテキスト検索は本当にうまく設計されておらず、基本機能が不足しているようです。 – jgr