16

以下は私が立ち往生しているSQLの例です。「iphone4s」という名前の製品は返されません。他に10個の結果が返されます。どんな助けでも大いに感謝します

最初のSQLの例

SELECT * FROM products 
          WHERE match(desc) against('+iphone +4s' IN BOOLEAN MODE) LIMIT 10";

結果:「iphone」および「4s」という単語が含まれます

2番目のSQLの例

SELECT * FROM products 
           WHERE match(desc) against('+iphone 4s' IN BOOLEAN MODE) LIMIT 10";

結果:「iphone」という単語が含まれますが、「4s」も含まれている場合は行のランクが高くなります

3番目のSQLの例

SELECT * FROM products 
           WHERE match(desc) against('iphone 4s' IN BOOLEAN MODE) LIMIT 10";

結果:「iphone」または「4s」という単語が含まれます

私が検索したいのは「iphone4s」ですが、「iphoneは良いですが、4s ...」、「新しいiphone 5が公開されました...」、...などの他の結果が表示されます。

誰かが私がそれを解決するのを手伝ってくれる?ありがとう。

4

2 に答える 2

19

完全に一致させるには、二重引用符を使用して一致するフレーズを囲みます。

SELECT * 
FROM products 
WHERE MATCH(desc) 
      AGAINST('"iphone 4s"' IN BOOLEAN MODE) 
LIMIT 10

詳細については、マニュアルページを参照してください

于 2012-12-27T13:11:04.583 に答える
0

REGEXPを使用する

SELECT * FROM products 
WHERE desc REGEXP 'iphone[[. .]]*4s'
LIMIT 10;

SQLFiddleデモ

于 2012-12-27T13:13:40.670 に答える