1

全文検索に関する多くの質問を検索しましたが、この問題の解決策が見つかりません。

私のコマンドは次のとおりです。

SELECT * FROM t1 WHERE MATCH (c1,c2,c3) AGAINST (:keyStr IN BOOLEAN MODE)

:keyStr == '+apple*' の場合、値が返されます。

:keyStr == '+this*' の場合、何も返されません。

if :keyStr == '+apple* +this*' 何も返されません。

:keyStr == '+apple* +chicken*' の場合、値が返されます。

「this」、「apple」、「chicken」はすべてデータベースにあり、3 つのクエリはすべて null 以外の結果を返す必要があります。

ストップワードが入力されると、データベースは自動的に何も返さないと思います。

4

2 に答える 2

1

問題は、「this」がストップワードであり、「this」の周りに + と * が含まれていることだと思います。

その理由は:keyStr == '+apple* +this*'、apple* と this* の両方が必要だからです。しかし、「this*」に一致するのはストップワードだけなので、結果は表示されません。

:keyStr == '+apple* this*'「thisorthat」でレコードを試すか挿入することができます

于 2013-02-23T02:48:54.457 に答える
0

ありそうもありません。Boolean Full-Text Search Documentationには、ストップワードとは見なされないことが明確に記載されています。

単語が切り捨て演算子で指定されている場合、それが短すぎる (ft_min_word_len 設定から決定される) 場合やストップワードであっても、ブールクエリから削除されません。これは、その単語が短すぎる単語やストップ ワードと見なされるのではなく、接頭辞で始まる単語の形式でドキュメントに存在する必要がある接頭辞と見なされるために発生します。

于 2013-02-23T02:33:51.423 に答える