2012-02-23 47 views
3

以下はSQLの例です。「mill hotel」という名前のホテルは返されません それは10のホテルを返します。すべてのヘルプはあなたがOR操作で任意の結果を指定していないので、演算子を指定する必要が素晴らしいおかげmysqlと〜との一致例


SELECT * FROM tbl WHERE match(hotel) against('the mill hotel' IN BOOLEAN MODE) LIMIT 10"; 

+0

私のsqlが見つかりましたが、私は10に制限されていましたが、トップ10にはありませんでしたか?ホテルという言葉をあまり重要視しないと、それはうまくいくでしょうか? SELECT * FROM tbl( 'mill <ホテル'ブーレンモードで)LIMIT 1 – Harry

答えて

6

だろう。これを試してみてください:

SELECT * FROM tbl WHERE match(hotel) against('+the mill hotel' IN BOOLEAN MODE) LIMIT 10"; 

Read more

+0

と一致する(ホテル)の一致キーワードは異なる列名を渡すことができますか? –

0

使用+ (plus)このような場合には...

SELECT * FROM tbl WHERE match(hotel) against ('+the mill hotel' IN BOOLEAN MODE) LIMIT 10"; 

読むthis詳細については。

SELECT * FROM tbl WHERE match(hotel) against('"the mill hotel"' IN BOOLEAN MODE) LIMIT 10; 

か、単に:

2

あなたはいつも言葉millおよび/またはhotelではなく、フレーズmill hotelに一致するように引用符を使用することができます

SELECT * FROM tbl WHERE match(hotel) against('"mill hotel"' IN BOOLEAN MODE) LIMIT 10; 

私は信じているすべての

SELECT * FROM tbl WHERE match(hotel) against('+the mill hotel' IN BOOLEAN MODE) LIMIT 10; 

には、という単語が必要ですあなたが全体のフレーズを必要とする場合は、引用符でする必要があります:オプションとしてmillhotelを残して、一致する

SELECT * FROM tbl WHERE match(hotel) against('+"the mill hotel"' IN BOOLEAN MODE) LIMIT 10; 

あなたはこの例のように、1検索フレーズだけを持っているときも、プラス記号は冗長です。

0

12.9.2ブール全文は

のMySQLがIN BOOLEAN MODEの修飾子を使用してブール全文検索を行うことができます検索します。

ブール全文検索は、これらの特性があります。

  • 彼らは自動的に関連性の降順に行をソートしません。

12.9.1自然言語全文は、MATCH()関数は、テキストコレクションに対する文字列の自然言語検索を実行し、デフォルトでまたはIN自然言語MODE修飾子を持つ

を検索します。コレクションとは、FULLTEXT索引に含まれる1つ以上の列の集合です。検索文字列はAGAINST()の引数として与えられます。表の各行について、MATCH()は関連性の値を返します。つまり、MATCH()リストで指定された列の検索文字列とその行のテキストとの類似度を測定します。

したがって、結果を並べ替えるか、結果の上限を削除する必要があります。

関連する問題