Эластичные синонимы принимают другие слова - PullRequest
0 голосов
/ 20 сентября 2019

Для этой последовательности команд:

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

PUT /test_index?
{
  "settings": {
    "analysis": {
      "analyzer": {
        "GermanCompoundWordsAnalyzer": {
          "type": "custom",
          "tokenizer": "standard",
          "filter": [
            "lowercase",
            "german_compound_synonym",
            "german_normalization"
          ]
        }
      },
      "filter": {
        "german_compound_synonym": {
          "type": "synonym",
          "synonyms": [
            "teppichläufer, auslegware läufer"
          ]
        }
      }
    }
  },
  "mappings": {
    "_doc": {
      "properties": {
        "name": {
          "type": "text", 
          "analyzer": "GermanCompoundWordsAnalyzer"
        }
      }
    }
  }
}

Добавление нескольких документов:

POST test_index/_doc/
{
    "sku" : "kimchy",
    "name" : "teppichläufer alfa"
}

POST test_index/_doc/
{
    "sku" : "kimchy",
    "name" : "teppichläufer beta"
}

Поиск одного документа (я бы ожидал), но возвращаются 2: (

GET /test_index/_search
{
  "query": {
    "match": {
      "name": {
        "query": "teppichläufer beta",
        "operator": "and"
      }
    }
  }
}

Я получу оба документа, так как синоним teppichläufer, auslegware läufer, läufer окажется на позиции 1 и «заменит» beta. Если удалить"analyzer": "GermanCompoundWordsAnalyzer", я получу только один документ, как и ожидалось.

Как использовать этот синоним и у меня нет этой проблемы?

Ответы [ 2 ]

0 голосов
/ 23 сентября 2019

После еще немного поиска я нашел это в документации.Это проблема RFM, извините, ребята.

Я пробовал с: https://www.elastic.co/guide/en/elasticsearch/reference/master/analysis-synonym-graph-tokenfilter.html

Самое смешное, что это делает NDCG с худшими результатами:)

0 голосов
/ 20 сентября 2019
POST /test_index/_search
{
  "query": {
   "bool" : {
        "should": [
          {
            "query_string": {
              "default_field": "name",
              "query": "teppichläufer beta"
              , "default_operator": "AND"
            }
          }
          ]
    }
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...