0
好吧,這是做我的灰色問題在我讀過,並通過MySQL,並看了各種選項,我只能認爲它是如此明顯,我只是失明。全文mysql的搜索和匹配確切的字符串
總之,我做了一個標籤雲,過程的一部分是驗證單詞是否存在,如果有的話+1,但它必須是確切的短語。
所以我認爲全文搜索是最好的選擇。
舉個例子。
$string = "hair dryer";
$string = '"'.$string.'"'; //enclose string in quotation marks to define must be an exact match
//$string = mysqli_real_escape_string($mysqli,$string); // removed to see if this was effecting the result.
$sql = "SELECT * FROM `search_keyword` WHERE Match (`keyword`) Against ('$string' IN BOOLEAN MODE) LIMIT 1";
$result=mysqli_query($mysqli,$sql);
所以測試是在DB我有詞「吹風機」一條線,它匹配了 - 好的結果
如果我改變字符串但是「頭髮」它仍然翻出「吹風機」,它不應該做它不完全匹配。
我已經讀完了所有的方法,我嘗試這個我得到了錯誤的結果。
(
[0] => Array
(
[keyword] => hair dryer
[id] => 25
)
) /// should be empty and hair as a single row is not found
請任何的建議是歡迎:-)
那麼爲什麼不''SELECT count(*)FROM ... WHERE Keyword = $ string'。如果你只想要一個特定的匹配。 – Mruf
是的,它可以使用該方法,但是由於某些原因,每隔一段時間它就無法拾取現有單詞,並且在不應該添加另一個單詞的情況下又添加了另一個單詞。所以我認爲,如果我使用全文,我會得到一個更準確的方法,而不是創建重複。我很困惑,爲什麼它看起來很難讓查詢只提取完全匹配。 –
如果我正確理解你的問題全文搜索不是正確的方向,因爲全文創建倒排索引,即使你將限制字符限制爲1,那麼'頭髮'將匹配'吹風機'。 您需要像處理您的關鍵字之前處理您的關鍵字像修剪之前,strtolower然後使用以下查詢SELECT count(*)FROM ... WHERE Keyword = trim($ string)或關鍵字字段上的組查詢。 –