我的MySQL数据库中有(英语/阿拉伯语)字典,超过80万个单词。我使用Laravel Project进行管理。在搜索栏中创建自动完成,但字典中的问题我有单词和句子。例如,在此列表中(Json API)在laravel Eloquent 5中为OrderBy ASC
:
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();
如果代码未优化,也请提醒我:)
答案 0 :(得分:0)
我认为可以使用两个单独的查询来完成此操作。
$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个符合条件的单词。