LIKE MySQLで一番上に最もマッチした結果を取得します。私はこのようなテーブルがあるとしましょう:は、クエリ
表:businesses
+----+------------------------+
| id | name |
+----+------------------------+
| 1 | Carolyn Wong Cakes |
| 2 | Cupcakin Cackes Shop |
| 3 | Wong Cackes Shop |
| 4 | Indie Cakes & Pastries |
+----+------------------------+
私は名前内部のいくつかの単語を検索しながら、best matched result
を取得したいです。 たとえば、検索したい:Wong Cackes Shop
は3語です。
私は上記の検索のために、このクエリを使用します。
SELECT * FROM businesses WHERE (
name LIKE '% Wong %' OR
name LIKE '% Cackes %' OR
name LIKE '% Shop %'
)
私はrecord 3
は、最初に一致した結果であると期待していたが、結果は次のとおりです。2
一致言葉
Cupcaking Cackes Shop
//と
Carolyn Wong Cakes
//2
が一致する単語Wong Cackes Shop
//3
と一致する単語
単語を検索し、最も一致した結果のレコードを他の結果の上に表示するにはどうすればよいですか?このよう
:
Wong Cackes Shop
//3
とのマッチングワードCupcaking Cackes Shop
Carolyn Wong Cakes
EDIT:メソッドのように私のword-boundaries
にも問題があります。 3つの単語のうちの1つで開始または終了する結果は得られません。なぜなら例えばLIKE '% word %'
のものspaces
の:
Wong[space]
//
[space]Wong[space]
試合
[space]Wong
//が
おかげと一致していない一致していません。
質問は他の質問に似ていると一致します:http://stackoverflow.com/questions/23153515/mysql-count-number-of-like-matches-per-entry – Bee157
をあなたはFULLTEXTインデックスを見てきました? – Strawberry
@Strawberry私のテーブルエンジンは 'innoDB'です。 FULLTEXTをサポートしていますか? – Pars