Php 对json列进行不区分大小写的全文搜索

Php 对json列进行不区分大小写的全文搜索,php,json,laravel,mariadb,case-insensitive,Php,Json,Laravel,Mariadb,Case Insensitive,我正在使用laravel,但如果需要,可以使用原始sql 我有多个字段是json字段,json中有该语言的翻译数据。例如,post表有字段标题,标题是{en:title在英语中,et:title在爱沙尼亚语中} 现在我需要做一个全文搜索来搜索这些字段,对于一些列,我需要从所有语言中搜索这个词,而不仅仅是从活动语言中 我用的是最新的马厩 如果我将这些字段作为全文搜索的索引,我可以很好地进行搜索,但搜索是区分大小写的 如何使搜索不区分大小写?json字段目前是longtext和utf8mb4_bin

我正在使用laravel,但如果需要,可以使用原始sql

我有多个字段是json字段,json中有该语言的翻译数据。例如,post表有字段标题,标题是{en:title在英语中,et:title在爱沙尼亚语中}

现在我需要做一个全文搜索来搜索这些字段,对于一些列,我需要从所有语言中搜索这个词,而不仅仅是从活动语言中

我用的是最新的马厩

如果我将这些字段作为全文搜索的索引,我可以很好地进行搜索,但搜索是区分大小写的

如何使搜索不区分大小写?json字段目前是longtext和utf8mb4_bin,laravel选择它们作为json字段。我知道bin是区分大小写的排序规则,但是我还可以做些什么,以使通过翻译的slug查找记录的功能仍然存在

在laravel中,可以像->where'slug->en',“some-post-slug”这样搜索。所以我需要保持laravels json字段功能完整

我已经尝试实现这一目标两天了,我需要一些外部输入。

MySQL文档:

默认情况下,搜索以不区分大小写的方式执行。要执行区分大小写的全文搜索,请对索引列使用区分大小写或二进制排序规则。例如,可以为使用utf8mb4字符集的列指定utf8mb4_0900_as_cs或utf8mb4_bin的排序规则,使其对全文搜索区分大小写

我打赌马里亚布也是这样。如果更改排序规则,它将像预期的那样处理不区分大小写的搜索。您可以通过以下方式进行更改:

ALTER TABLE mytable
CONVERT TO CHARACTER SET utf8mb4 
COLLATE utf8mb4_general_ci;