2012-02-10 1 views
0

私は会社の名前のテーブルを持っているMySQLデータベースを持っています。例MySQLの自然言語検索ストップワードの動作は、ストップワードにもかかわらず結果を表示しますか?

AES Corp 

のために私はそれはまだこのような結果を返す全文検索、

select * from companies where MATCH(listOfCompanies.name) AGAINST('AES Corp'); 

SHANGHAI FOREIGN TRADE CORP. PU D 
GFT USA CORP. 
GFT USA CORP. 
QET, CORP. 
FUN-4-ALL CORP. 

はそれが戻らないべきではない、私がないとき

Corp 

しかし、私のstopwords.txtに入れますそれで私はCorpを除外したので、結果はAESにマッチしているだけなのですか?あるいは、全文検索の仕組みを誤解していますか?

+0

「AGAISNT」とは何ですか?それはあなたの実際のクエリですか??私は非常にそれを疑う... –

+0

実際のクエリですね。結果は実際に返されるものです。 http://dev.mysql.com/doc/refman/5.0/en/fulltext-natural-language.html自然言語検索を使用している明確化されたOP。 –

+0

あなたは間違ったMySQLキーワードを綴りました。 「AGAINST」ではなく「AGAISNT」でなければなりません。 – Bojangles

答えて

0

AGAINSTというキーワードが間違っていると思います。リンクしているページのサンプルクエリを見てください。結果の両方の行にキーワードが表示されます。 AGAINSTは指定されたキーワードで結果をフィルタリングしませんが、全く反対です - 指定された列を調べて、一致するかどうか確認します:http://dev.mysql.com/doc/refman/5.0/en/fulltext-natural-language.html

+0

私は本当にダムの間違いをしたが、私はあなたの質問に答えたが、クエリはstopwords.txtにあります。その単語は無視されますか?それが私がstopwords.txtの目的を理解した方法ですが、私がSQLの知識を持っているので、私の内部の仕組みについてもっと知っているかもしれません。 –

0

私は間違ったことを理解しました。非常に恥ずかしい間違い。検索は実際には設定されたとおりに動作し、データを解析してアップロードするスクリプトを使用していたため、UPDATEを使用していたので、古い結果は実際には削除されませんでした。私はテーブルを空にして、それを再充填させるべきだった。