Подтвердить что ты не робот

Персонализированные результаты поиска для Elasticsearch

Как можно настроить Elasticsearch так, чтобы он возвращал персонализированные результаты?

Например, мне бы хотелось, чтобы результаты, возвращаемые конкретному пользователю, были ранжированы выше, если они нажимали на результат ранее или если они "помечены", что приводит к прошлому. У вас также может быть опция "скрыть", которая подталкивает результаты к ранжированию. Из того, что я видел с помощью elasticsearch до сих пор, кажется трудным вернуть разные рейтинги пользователям на основе того, что пользователь имеет динамические данные.

Решение должно масштабироваться до тысяч пользователей, выполняющих десятки или около того запросов в день. В идеале я бы хотел, чтобы рейтинг изменялся в реальном времени, но он не критичен.

4b9b3361

Ответ 1

Elasticsearch предоставляет широкий выбор вариантов оценки, но затем для достижения того, что вы сказали, вам нужно будет выполнить некоторые дополнительные задачи.

Наш выбор инструментов - запрос оценки функции и фильтра поиска терминов документа.

Сначала создайте документ для каждого пользователя, указав ссылки или идентификатор ссылки, которые он посетил, и ссылки, которые ему понравились. Это должно быть размещено отдельно как отдельный индекс. И это должно поддерживаться пользователем, так как он должен обновлять и поддерживать эту запись со стороны клиента.

Теперь, когда пользователь нажимает на индекс данных, выполните запрос оценки функции с функцией фильтра, указывающей на эти поля.

При таком подходе, поскольку фильтр кэшируется, вы также должны получить приличную производительность.