gpt4 book ai didi

php - FullText 或 LIKE 搜索问题(无法找到库存)

转载 作者:行者123 更新时间:2023-11-29 06:09:45 24 4
gpt4 key购买 nike

当用户搜索我知道在库存中的元素时,在我的库存中查找元素时遇到一些麻烦。

表列是 ManufacturerNameMatch、SubCategoryNameMatch、MainCategoryNameMatch、Model_Name

当我搜索 Nikon 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")

最佳答案

like运算符(operator)无法通过这种方式找到您要查找的内容,因为连接的文本不包含 Nikeon Ti-E子串。还有一个拼写错误,但这可能只是在SO上拼错了。

您必须搜索 like '%Nikon% Ti-E%' (注意尼康和 Ti-E 之间的额外百分比)如果你想使用 like运营商。

对此,使用全文搜索可能是更合适的解决方案。我会使用 Boolean mode ,您可以在其中指定这两个词都应该在连接的内容中,以便出现在结果中。

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

关于php - FullText 或 LIKE 搜索问题(无法找到库存),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39022689/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com