1

次のようなテーブルがあるとします。

テーブル: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ますが、結果は次のとおりです。

  1. Carolyn Wong Cakes//2一致する単語で
  2. Cupcaking Cackes Shop//2一致する単語で
  3. Wong Cackes Shop//3一致する単語で

単語を検索して、他の結果の上に最も一致した結果を持つレコードを取得するにはどうすればよいですか?

このような:

  1. Wong Cackes Shop//3一致する単語で
  2. Cupcaking Cackes Shop
  3. Carolyn Wong Cakes

編集: 私のword-boundariesLIKE メソッドにも問題があります。3 つの単語のいずれかで開始または終了する結果は得られません。 たとえば、//一致spacesしない //一致しないLIKE '% word %'

Wong[space]
[space]Wong[space]
[space]Wong

ありがとう。

4

2 に答える 2