Подсветка фраз со стоп-словами при match_phrase поиске


(Дмитрий Белоус) #1

Добрый день!

Возникла проблема, связанная с подсветкой результатов поиска: никакой подсветки вообще не выдаётся.
Она имеет место, если:

  1. к полю привязан термвектор ("with_positions_offsets");
  2. ищем фразу;
  3. в фразе есть хотя бы одно стоп-слово.

Пример.

Создание индекса:

PUT twitter
{
  "settings": {
    "analysis": {
      "analyzer": {
        "default": {
	  "type": "standard",
	  "stopwords": [ "and", "the" ] 
            }
      }
    }
  },
  "mappings": {
    "tweet" : {
      "properties": {
        "text" : {
	  "type": "string",
	  "term_vector": "with_positions_offsets"
        }
      }
    }
  }
}

Добавление записи:

PUT twitter/tweet/1
{
  "text" : "this and end"
}

Поиск:

POST /twitter/tweet/_search
{
  "query": { 
    "match_phrase": {
      "text": "this and end"
    }
  },
  "highlight": {
    "fields" : {
      "text" : {}
    }
  }
}

Результат:

"hits": [
  {
    "_index": "twitter",
    "_type": "tweet",
    "_id": "1",
    "_score": 0.38356602,
    "_source": {
       "text": "this and end"
     }
  }
]

Можно ли что-нибудь с этим сделать? Пока что единственным нашим решением было убрать все стоп-слова.


(Igor Motov) #2

Это очень старая и сложная проблема, см тут - https://github.com/elastic/elasticsearch/issues/2157


(Дмитрий Белоус) #3

Спасибо большое)


(system) #4