Нечеткость частичного совпадения с Elasticsearch - PullRequest
0 голосов
/ 09 апреля 2019

Учитывая поисковый запрос / строку, я хотел бы запросить два поля с Elasticsearch, учитывая некоторую степень нечеткости.

У меня есть поля «имя» и «фамилия» (и избыточно также объединены в другое поле «полное имя»):

{
  "settings": {
    "analysis": {
      "filter": {
        "nGram_filter": {
          "type": "nGram",
          "min_gram": 3,
          "max_gram": 20,
          "token_chars": [ "letter", "digit", "punctuation", "symbol" ]
        }
      },
      "analyzer": {
        "nGram_analyzer": {
          "type": "custom",
          "tokenizer": "whitespace",
          "filter": [ "lowercase", "asciifolding", "nGram_filter" ]
        },
        "whitespace_analyzer": {
          "type": "custom",
          "tokenizer": "whitespace",
          "filter": [ "lowercase", "asciifolding" ]
        }
      }
    }
  },
  "mappings": {
    "_doc": {
      "properties": {
        "lastname": {
          "type": "keyword"
          "fields": {
            "partial": {
              "type": "text",
              "analyzer": "nGram_analyzer",
              "search_analyzer": "whitespace_analyzer"
            }
          }
        },
        "firstname": {
          "type": "keyword"
          "fields": {
            "partial": {
              "type": "text",
              "analyzer": "nGram_analyzer",
              "search_analyzer": "whitespace_analyzer"
            }
          }
        },
        "fullname": {
          "type": "text",
          "analyzer": "nGram_analyzer",
          "search_analyzer": "whitespace_analyzer"
        }
...

Я хотел бы запросить эти два поля сСтрока, требуя максимального отклонения.Так, например, для firstname = "John" и lastname = "Test", следующие запросы должны возвращать запись:

"John Test"
"John Tes"
"John Testx"
"Joh Test"
"Johx Test"

Другая строка запроса с большим количеством "deviation", однако, не должна возвращать результат:

"John Texx"
"John T"
"John"
"Test"

Я пробовал разные подходы с нечеткостью, но не смог заставить его работать.

У кого-нибудь есть идеи, как мне указать индекс и / или запрос?Заранее большое спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...