當用戶搜索我知道的東西在庫存中時,在我的庫存中找到某件商品時遇到了一些麻煩。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")
您是否知道該查詢只能在某些sql模式設置下運行,因爲您在select列表中既不在group by子句中也不受聚合函數的限制? – Shadow