Задать вопрос
Ответы пользователя по тегу Elasticsearch
  • Как сортировать новости в результатах поиска по дате публикации?

    Davidaa_WoW
    @Davidaa_WoW
    Интересный кейс. Я бы возможно вручную определил интервалы и давал по ним бусты.
    Допустим:
    новости за сегодня - буст = 10
    новости за последнюю неделю - буст = 5
    новости за последний месяц - буст = 3
    новости за последний год - буст = 1
    новости старше - буст = 0.2

    При таком условии, наиболее точные совпадения, вероятнее всего всё равно будут выше, даже если они старше. Например, если текст названия полностью совпадает с новостью двухлетней давности.
    Хотя, в данном случае надо смотреть ещё отдельно и тьюнить фильтры и метчеры, которые вы используете
    Ответ написан
    Комментировать
  • Правильный способ реализовать поиск с автодополнением по одному слову?

    Davidaa_WoW
    @Davidaa_WoW
    Зависит от того, что вы храните в индексе, и какой результат в итоге хотите получить.
    Какие могут быть кейсы:
    1. В индексе хранится много чего: кошки, собаки, попугаи и т.д.
    Решение: заводите новое поле, например 'pet_type'. Устанавливайте в него значение, например: 'собака'. Далее, создаёте статический фильтр синонимов в индексе, называете его, например 'pet_analyzer' и прописываете список необходимых синонимов. В результате должно получиться, что-то типа такого:
    PUT /pets_index
    {
      "settings": {
        "analysis": {
          "filter": {
            "pet_synonyms": {
              "type": "synonym",
              "synonyms": [
                "собака, щенок, кобель => dog",
                "кошка, кот, котёнок => cat",
                "попугай, попугайчик => parrot"
              ]
            }
          },
          "analyzer": {
            "pet_analyzer": {
              "type": "custom",
              "tokenizer": "standard",
              "filter": ["lowercase", "pet_synonyms"]
            }
          }
        }
      },
      "mappings": {
        "properties": {
          "pet_type": {
            "type": "text",
            "analyzer": "pet_analyzer"
          }
        }
      }
    }

    2. В индексе хранятся только собаки, либо вам нужно распределение (щенки/взрослые собаки/распределение по полу)
    В таком случае, добавляете эту характеристику прямо в name. То есть документ у вас будет называться: 'Щенок лабрадора'. Далее, смотрите на типы формирования входящих запросов. Вам могут подойти:
    Ответ написан
    Комментировать