mysql - Laravel Eloquent:字母顺序,但从小词到句子
问题描述
我的 MySQL 数据库中有超过 800,000 个单词的(英语/阿拉伯语)字典。我使用 Laravel Project 来管理它。在搜索栏中创建自动完成但字典中的问题我有单词和句子。例如在这个列表中(Json API)OrderBy ASC
在 laravel Eloquent 5 中:
Acquaint with
Acquaintance
Acquire
Acquired
Acquisition
但我想要按字母顺序排列,但从Words
到Sentences
这样,总是意味着句子归结为单词:
Acquaintance
Acquire
Acquired
Acquisition
Acquaint with
这是我的代码:
$result = AutoComplete::select('Translation')
->where('Translation', 'LIKE', $search. '%')
->limit(4)
->distinct()
->orderBy('Translation', 'asc')
->get();
如果代码未优化,请提醒我:)
解决方案
我认为这可以使用两个单独的查询来完成。
$words = AutoComplete::where('Translation', 'LIKE', "{$search}%")
->where('Translation', 'NOT LIKE', '% %')
->limit(5)
->distinct()
->orderBy('Translation')
->pluck('Translation');
$sentences = AutoComplete::where('Translation', 'LIKE', "{$search}%")
->where('Translation', 'LIKE', '% %')
->limit(5)
->distinct()
->orderBy('Translation')
->pluck('Translation');
$finalResults = $words->merge($sentences)->take(5);
您可以从数据库中获得最多 5 个匹配的单词和最多 5 个匹配的句子。
假设您只想显示 5 个总结果,通过组合这些结果,您可以获得句子前的前 5 个匹配有序单词。
推荐阅读
- node.js - aws lambda函数在PC和笔记本电脑之间不刷新
- linux - 在 Windows PowerShell 中使用 grep 命令行来计算 IP 地址
- ruby-on-rails - 如何在 ActiveRecord PostgreSQL 中标记要删除或排除的列?
- javascript - 如何连接我的函数 checkKeyPressed 以更改 javascript 中文本的颜色?
- java - 无法让蓝牙媒体按钮在主要活动中工作
- c++ - 谷物编译并运行,但不写入文件
- amazon-redshift - AWS RedShift 自动将 CTE 转换为子查询
- spring-boot - 如何在spring boot fiegn客户端中解码错误代码
- build - 在 IBM 云区块链入门计划上部署 Perishable 网络时构建失败
- php - 防止浏览器控制台修改类(安全问题)