0

SQL の MATCH/AGAINST 機能を使用したクエリで語順がカウントされるのはいつですか?

次のコードを使用して、名前が Palwinder Singh に似ている人を探しているとします。

  SELECT DISTINCT id,name,surname FROM person 
  WHERE MATCH(name,surname) 
  AGAINST('+Palwinder+Singh' IN BOOLEAN MODE)

このコードは、Palwinder Singh という人物 (私のデータベースではたまたまユニークな人物) に関連する情報を正しく返します (これは予想される結果です)。

ただし、次のコードを使用すると:

  SELECT DISTINCT id,name,surname FROM person 
  WHERE MATCH(name,surname) 
  AGAINST('+Singh+Palwinder' IN BOOLEAN MODE)

Palwinder Singh を探しているという事実を無視しているように見えますが、姓が「Singh」のすべてのプレイヤー (合計 22 人) のリストを取得します。

なぜ結果が違うのかわかりませんか?単語の順序に関係なくクエリを取得するにはどうすればよいですか?

4

2 に答える 2

0

次のようなキーワードの間にスペースを使用する必要があります

AGAINST('+Singh +Palwinder' IN BOOLEAN MODE)

「+Singh+Palwinder」を使用すると、「Singh+Palwinder」のような文字列を持つフィールドが検索されると思います。しかし、'+Singh +Palwinder' を使用すると、指定したフィールドで 'Singh' と 'Palwinder' の両方が検索されます。

于 2014-03-16T17:03:47.727 に答える
0

単に次のようなことをしないのはなぜですか...

SELECT id
       ,name
       ,surname 
FROM person 
WHERE name = 'Palwinder'
AND   surname = 'Singh' 
于 2014-03-15T22:00:18.377 に答える