我有一個填充了某些值的表格,例如布爾全文搜索排除短語AB-CD,例如-「A B C D」?
| CODE | NAME | NB: THIS IS A VERY BASIC EXAMPLE
| zygnc | oscar alpha |
| ab-cd | delta tiger |
| fsdys | delta bravo |
使用MySQL全文布爾搜索我想要搜索該表包含「三角洲」的所有名稱,但不包括第一個結果其獨特的代碼「AB-CD的基本。此代碼包含一個減號,這是一個要求,並將其刪除是不可能的。
所以下面的查詢「應該」在我的腦海適應這樣的:
SELECT code, name
FROM items
WHERE MATCH (code, name)
AGAINST ('delta -"ab-cd"' IN BOOLEAN MODE)
然而,運行此查詢會在沒有產品的預期結果的結果確實還包含一行是代碼意味着被排除在外,'ab-cd'。
這兩個表的聯盟設置爲utf8_bin。
的的ft_min_word_len值設置爲4
可能有人可能認爲這種現象的一個原因,我認爲它可能將字符串作爲兩個單獨的值,例如「-ab」,「-cd」和ft_min_word_len的值是4,這兩個字符串都不能產生任何結果?
我認爲使用封裝「」,將意味着第二個減號將被視爲文字,但它似乎並非如此。也許這與我沒有意識到的聯盟表現有關係?
無論如何,任何建議/意見/輸入/反饋/方向將不勝感激,謝謝!
目前,我們的託管服務提供商不能修改此值。在任何情況下,如果值設置爲3,「ab」將是2的值,因此不會產生任何結果?有沒有辦法強制MySQL將其識別爲包含5個值的文字字符串? –
我們不能將此變量用作動態變量。請參閱http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html – Amernath
我不認爲這裏的ft_min_word_len值有任何問題。我試過這種情況,它對我來說是完美的。 – Pramod