Laravel Scout с поиском драйвера Elasticsearch внутри массива - PullRequest
0 голосов
/ 19 октября 2019

У меня есть проект с Laravel 6 и Laravel Scout 7 , в котором также установлен драйвер Elasticsearch .

У меня есть следующееСтруктура моего индекса (пример документа):

{
    "id": 123456,
    "title": {
        "ar": "Title in Arabic",
        "de": "Title in Deutsch",
        "en": "Title in English",
        "ru": "Title in Russian",
        "uk": "Title in Ukrainian"
    },
    "original_title": "Original title of item, can be in any language",
    "local_title": "Title of item on the local drive",
    "popularity": "Item popularity represented by the float",
    "overview": {
        "ar": "Overview in Arabic",
        "de": "Overview in Deutsch",
        "en": "Overview in English",
        "ru": "Overview in Russian",
        "uk": "Overview in Ukrainian"
    }
    "created_at": "date",
    "updated_at: "date"
}

Я хочу иметь возможность искать этот элемент по названию на любом языке, однако я понятия не имею, как этого добиться. .

Вот пример моего запроса:

Mixed::search(sprintf('title:%s', $query))->within(implode(',', [
    (new Series)->searchableAs()
]))->get())

Учитывая эту часть sprintf('title:%s', $query) Я говорю разведчику, что нужно искать совпадения по названию, однако у моих заголовков есть локали внутри них. .

Можно ли искать внутри "массива" , который равен title ? Я пытаюсь достичь, например, если пользователь ищет элемент на русском языке, он должен искать на этом языке, однако, если тот же запрос введен на английском языке, должен быть возвращен точно такой же результат.

Rightтеперь я могу искать предметы только на английском языке из-за original_title "колонки" на английском языке.

Это мой первый день с Scout и Elasticsearch.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...