Elasticsearch Span_near с запросом bool

Мне нужно выяснить все документы, в которых есть слова "Лондон", "Гуччи" или "Мода". Но в то же время я не хочу, чтобы все те документы, которые имеют все или некоторые из этих 3 слов (все или 2 или 1), должны быть увеличены в баллах в зависимости от их близости... т.е.

  1. Док A - "Лондон большой. Gucci - бренд".
  2. Док Б - "Лондон большой".
  3. Док C - "Gucci - это модный бренд в Лондоне".
  4. Док D - "Показ мод Gucci в Лондоне".

Результат должен быть в порядке -

  1. Документ D (все 3 слова существуют, 2 слова вместе, 1 отдельно)
  2. Док C (все 3 слова существуют, каждое из них отдельно)
  3. Документ A (существует 2 слова, каждое из которых отдельно)
  4. Док B (1 слово существует)

Я пытаюсь следующий поиск -

{
"query": {
    "bool": {
        "should": [
            {
                "query_string": {
                    "default_field": "transcription",
                    "query": "\"Gucci\" OR \"Chinese\" OR \"London\""
                }
            },
            {
                "span_near": {
                    "clauses": [
                        {
                            "span_term": {
                                "transcription": "Gucci"
                            }
                        },
                        {
                            "span_term": {
                                "transcription": "Chinese"
                            }
                        },
                        {
                            "span_term": {
                                "transcription": "London"
                            }
                        }
                    ],
                    "boost": 10,
                    "slop": 50,
                    "in_order": false
                }
            }
        ]
    }
},
"highlight": {
    "fields": {
        "transcription": {
            "type": "plain"
        }
    }
}}

Но я получаю только результаты в соответствии с query_string . Похоже, span_near не работает.. т. Е. Документы не повышаются в зависимости от близости.

Что здесь не так?

0 ответов

Другие вопросы по тегам