問題があります。
私のMySql dbには、製品テーブルに40000行あります。テーブルにはT9Textという列があります。私の行の 1 つ T9Text 領域は次のようになります。
UNISNLS106B UNI.SNLS 106B SNLS-106B M.OT. 12V 2DelíkMotorCraftTípāUnipoint66-205 66205 F02Z-11390-A F02Z11390A E90Z-11390-A E90Z11390A F4DZ-11390-A F4DZ11390A F37790-A F3VY1390ZZZZZZZZZZZZZ11390A
オートコンプリート プロセスのために、db でストアド プロシージャを実行します。それはそのようなものです:
SELECT p.Code,
p.Name,
p.`T9Text`,
MATCH (p.T9Text) AGAINST ('+UNI* +SNLS* +106B*' IN BOOLEAN MODE) AS SCORE
FROM product p
WHERE MATCH (p.T9Text) AGAINST ('+UNI* +SNLS* +106B*' IN BOOLEAN MODE) >0
GROUP BY p.Name
ORDER BY SCORE DESC
このように、うまく機能し、1 行だけを返します。
しかし、次のように where 条件を記述する必要があります。
MATCH (p.T9Text) AGAINST ('+*UNI* +*SNLS* +*106B*' IN BOOLEAN MODE) >0
上記のコードでは、1877 行が返されます。プラス記号が機能しないようです
MATCH (p.T9Text) AGAINST ('+*UNISNLS106B*' IN BOOLEAN MODE) >0
MATCH (p.T9Text) AGAINST ('+*NISNLS106B*' IN BOOLEAN MODE) >0
最初のクエリでは 1 行が返されますが、2 番目のクエリでは 0 行が返されます。
それで、私の質問があります: mysql の全文検索では、+テスト式を使用できませんか? そうでない場合、これを行う方法はありますか?(いいねを除く)