Есть ли способ удалить слишком похожие результаты из запроса эластичного поиска - PullRequest
0 голосов
/ 20 мая 2019

Я пытаюсь найти способ удалить документы, которые слишком похожи друг на друга, из результатов Elasticsearch _search.

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

GET /document/_search
{
  "query": {
    "term": {
      "tags.name": {
        "value": "sport"
      }
    }
  }
}

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

Обновление

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

GET /document/_search
{
  "size": 30,
  "query": {
    "bool": {
      "should": [
        {
          "more_like_this": {
            "fields": [
              "content"
            ],
            "like": [
              {
                "_index": "document",
                "_id": 2585099
              }
            ],
            "min_term_freq": 1,
            "boost": 5
          }
        },
        {
          "more_like_this": {
            "fields": [
              "summary",
              "description",
              "title"
            ],
            "like": [
              {
                "_index": "document",
                "_id": 2585099
              }
            ],
            "min_term_freq": 1,
            "boost": 2
          }
        }
      ],
      "must_not": [
        {
          "more_like_this": {
            "fields": [
              "summary",
              "description",
              "title"
            ],
            "like": [
              {
                "_index": "document",
                "_id": 2585099
              }
            ],
            "min_term_freq": 1,
            "boost": 10,
            "minimum_should_match": "70%"
          }
        }
      ],
      "minimum_should_match": 1
    }
  }
}
...