lumen + mongodb: поиск по строковому значению, работает очень медленно - PullRequest
0 голосов
/ 03 декабря 2018

ниже - это данные, которые хранятся в базе данных mongodb,

    { 
        "_id" : ObjectId("5bfb91880ce75b53122ba13f"), 
        "html_message" : "<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\"><style type=\"text/css\" style=\"display:none;\"><!-- P {margin-top:0;margin-bottom:0;} --></style></head><body dir=\"ltr\"></body>\r\n\t\t</html>", 
"email_from" : "test@outlook.com"

    }

Значение "html_message" может быть длиннее, чем приведенный пример

, пока я выполняю поиск по просвету с кодом ниже,

$query->where(function ($query) use ($request) {
                $query->where('email_from', 'like', "%$request->message%");               
                $query->orWhere('html_message', 'like', "%$request->message%");
                >message%");
            });

это работает очень медленно,

Я дал индексирование на "email_from", это прекрасно,

Теперь я даю индексацию на "html_message", это не позволяет мне давать индексацию и выдает ошибку,

Я использую запрос ниже, чтобы дать индексацию по html_message,

db.getCollection("email_message").createIndex({ html_message: "text" });

это дает мне ошибку, как показано ниже,

{ 
    "ok" : 0.0, 
    "errmsg" : "trying to index text where term list is too big, max is 4mb _id: ObjectId('5bfc5af70ce75b5a2b541296')", 
    "code" : 16733.0, 
    "codeName" : "Location16733"
}

Я не понимаю, как ее решить.

...