そのため、MATCH アイテムと MATCH all アイテムの両方で同じ結果が得られるようにしたい状況がありますが、一貫性のない結果が得られています。
DB の現在のタイプは次のとおりです。
mysql> select the_type from data GROUP BY the_type;
+-----------------+
| the_type |
+-----------------+
| type1 |
| type2 |
+-----------------+
基準を指定しない場合:
mysql> select COUNT(*) as num from data;
+------+
| num |
+------+
| 2131 |
+------+
すべてのタイプの MATCH を使用:
mysql> select COUNT(*) as num from data WHERE MATCH('(@the_type type1|type2)');
+------+
| num |
+------+
| 430 |
+------+
それは私ですか、それとも両方のクエリが同じ正確な数を返す必要がありますか?
編集:
掘り下げた後、「タイプ」の1つにハイフンが含まれていることがわかりました。
次のようなものです:
MATCH('(@the_type type1|type2)')
「type1」または「type2」になりますが、次のようになります。
MATCH('(@the_type type1|type-two)')
「type1」OR「type」AND「two」になります。
今、私は型を INT フィールドに変換しようとしましたが、やろうとしていました:
mysql> select COUNT(*) as num from data WHERE type = 1 OR type = 2;
しかし、私はエラーが発生します:
ERROR 1064 (42000): sphinxql: syntax error, unexpected OR, expecting $end near 'OR type = 2'
何か案は?