我的MySQL数据库中有(英语/阿拉伯语)字典,超过80万个单词。我使用Laravel Project进行管理。在搜索栏中创建自动完成,但字典中的问题我有单词和句子。例如,此列表(Json API)在laravel Eloquent 5中为OrderBy ASC

Acquaint with
Acquaintance
Acquire
Acquired
Acquisition


但是我想要按字母顺序排列,但是要像这样从WordsSentences,总是表示句子是单词:

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个匹配项。

09-25 18:02