2016-08-18 63 views
1

當用戶搜索我知道的東西在庫存中時,在我的庫存中找到某件商品時遇到了一些麻煩。FullText或LIKE搜索問題(無法找到庫存)

表列是ManufacturerNameMatch,SubCategoryNameMatch,MainCategoryNameMatch,MODEL_NAME

當我搜索尼康的Ti-E腳本似乎無法找到它。但是,我知道它在庫存中。在數據庫中,Model_Name被列爲「Eclipse Ti-E w/HUBC Inverted Phase Contrast」,ManufacturerNameMatch是「Nikon」

我正在使用FullTextSearch索引進行多詞搜索,但似乎無法找到所以我一直在拼湊連接列和使用LIKE搜索(仍然沒有)。想知道如果有人有一些更好的想法,或者我做錯了什麼,或者不瞭解FullTextIndex搜索或LIKE搜索與MySQL。

$category = 'Nikeon Ti-E' 
$findPhraseMatch = DB::table('inventory') 
           ->selectRaw(DB::raw("*, GROUP_CONCAT(CambridgeID) as `CambridgeIDArray`, count(*) as `groupTotal`")) 
           ->where(DB::raw("CONCAT_WS(' ', ManufacturerNameMatch, SubCategoryNameMatch, MainCategoryNameMatch, Model_Name)"), 'LIKE', "%$category%")         
           ->where('Units_OnHand', '>=', 1)          
           ->groupBy('Model_Name', 'ManufacturerNameMatch') 
           ->orderBy('ManufacturerNameMatch') 
           ->paginate(15); 

全文這裏

// $final would look like +nikon +ti+e 
$findFullMatch = DB::table('inventory') 
         ->selectRaw(DB::raw("*, GROUP_CONCAT(CambridgeID) as `CambridgeIDArray`, count(*) as `groupTotal`")) 
         ->whereRaw("MATCH(ManufacturerNameMatch, SubCategoryNameMatch, MainCategoryNameMatch, Model_Name, Title_Override, Description_Old) AGAINST ('$final' IN BOOLEAN MODE) AND Units_OnHand >= 1") 
+0

您是否知道該查詢只能在某些sql模式設置下運行,因爲您在select列表中既不在group by子句中也不受聚合函數的限制? – Shadow

回答

2

like運營商搜索不能找到你所尋找的這種方式,因爲級聯文本不包含Nikeon Ti-E子。還有一個拼寫錯誤,但這可能只會在SO上拼寫錯誤。

如果您想使用like運算符,則必須搜索like '%Nikon% Ti-E%'(注意尼康和Ti-E之間的附加百分比)。

使用全文搜索可能是一個更合適的解決方案。我將使用Boolean mode,您可以在其中指定兩個單詞應位於連接的內容中以便出現在結果中。

... where match(ManufacturerNameMatch, SubCategoryNameMatch, MainCategoryNameMatch, Model_Name) against ('+Nikon +"Ti-E"' in boolean mode) 
+0

感謝您的回覆。我也直接在上面使用全文搜索,無論出於何種原因,我似乎無法在清單中返回此項目。我編輯了我的原始文章以包含全文搜索。有任何想法嗎? – soulglow1985

+0

感謝您的回覆。我找到的解決方案是將整個字符串用雙引號括起來,並在每個單詞前加上+。所以我分裂了一個用戶搜索,並在每個單詞前添加+,並在整個字符串周圍添加雙引號。似乎工作。感謝您的迴應。 – soulglow1985

+0

是的,您需要使用「正如我在包含某些字符的單詞所做的那樣,例如 - 如果上述響應幫助您解決問題,請將其標記爲已接受,以便此問題的其他查看者知道它已關閉。 – Shadow