Elasticsearch ошибка раскладки

Discuss the Elastic Stack

Loading

DELETE my_index

PUT my_index
{
  "settings": {
    "analysis": {
      "char_filter": {
        "rus_en_key": {
          "type": "mapping",
          "mappings": [
            "a => ф",
            "b => и",
            "c => с",
            "d => в",
            "e => у",
            "f => а",
            "g => п",
            "h => р",
            "i => ш",
            "j => о",
            "k => л",
            "l => д",
            "m => ь",
            "n => т",
            "o => щ",
            "p => з",
            "r => к",
            "s => ы",
            "t => е",
            "u => г",
            "v => м",
            "w => ц",
            "x => ч",
            "y => н",
            "z => я",
            "A => Ф",
            "B => И",
            "C => С",
            "D => В",
            "E => У",
            "F => А",
            "G => П",
            "H => Р",
            "I => Ш",
            "J => О",
            "K => Л",
            "L => Д",
            "M => Ь",
            "N => Т",
            "O => Щ",
            "P => З",
            "R => К",
            "S => Ы",
            "T => Е",
            "U => Г",
            "V => М",
            "W => Ц",
            "X => Ч",
            "Y => Н",
            "Z => Я",
            "[ => х",
            "] => ъ",
            "; => ж",
            "< => б",
            "> => ю"
            ]
        }
      },
      "analyzer": {
        "rus_en_key_analyzer": {
          "char_filter": [
            "rus_en_key"
          ],
          "tokenizer": "standard",
          "token_filter": ["lowercase"]
        }
      }
    }
  },
  "mappings": {
    "my_doc": {
      "properties": {
        "text": {
          "type": "text"
        }
      }
    }
  }
}

PUT my_index/my_doc/_bulk?refresh
{"index":{"_id":1}}
{"text" : "Самокат (скутер, англ. scooter) — наземное средство передвижения, в основном двухколёсное, приводимое в действие путём многократного отталкивания ногой от земли в положении стоя, и управляемое при помощи руля, ранее так называли велосипед"}
{"index":{"_id":2}}
{"text" : "Самокат используется не только в качестве транспорта, но и в качестве средства для развлечения, занятия спортом и физкультурой (тренажёр). Существуют также трёхколёсные инерционные конструкции самокатов с двумя подножками, где разгон происходит при переносе веса тела с одной ноги на другую без отталкивания от земли"}
{"index":{"_id":3}}
{"text" : "Точное время создания самоката неизвестно. Похожие на него изображения встречаются на древних фресках. Есть версия, что самокат впервые был изготовлен в 1761 году в Германии каретным мастером Михаэлем Касслером. По другой версии, самокат создал немецкий изобретатель Карл фон Дрез в 1817 году, и усовершенствовал его в 1820 году, сделав управляемым переднее колесо. Такие самокаты приобрели популярность во Франции и Англии. Английские самокаты, в отличие от немецких, имели железную раму."}

POST my_index/my_doc/_search
{
  "aggs": {
    "keyboard": {
      "filters": {
        "filters": {
          "eng": {
            "match": {
              "text": {
                "query": "cfvjrfn"
              }
            }
          },
          "rus": {
            "match": {
              "text": {
                "query": "cfvjrfn",
                "analyzer": "rus_en_key_analyzer"
              }
            }
          }
        }
      }
    }
  },
  "size": 0
}

Как реализовывается подобный функционал? В документации ничего нет, а в остальных источниках пишется, что раскладка заменяется до передачи запроса на поиск. Также видел, что предлагается реализация через suggest, но конкретных указаний нет.

Вопрос: как всё же это сделать?

Даниил Чижевский's user avatar

задан 29 июн 2020 в 8:29

user395958's user avatar

$rusLetters = ['й', 'ц'];
$engLetters = ['q', 'w'];
echo str_replace($engLetters, $rusLetters , 'qw');

ответ дан 29 июн 2020 в 8:40

n.osennij's user avatar

n.osennijn.osennij

3,0531 золотой знак23 серебряных знака48 бронзовых знаков

1

You can start using the keyboard_layout suggester by providing the suggest part of a search request:

In the response you should see the original start offset and length in the suggest text and if any found a switched keyboard layout options.
Each options array contains an option object that includes the suggested text and its document frequency. You may also request original token and its frequency by providing add_original option.

{
  "suggest": {
    "keyboard_suggestion": [
      {
        "text": "шЗрщту",
        "offset": 0,
        "length": 6,
        "options": [
          {
            "text": "iPhone",
            "freq": 4,
            "switch": true
          }
        ]
      },
      {
        "text": "ЧЫ",
        "offset": 7,
        "length": 2,
        "options": [
          {
            "text": "XS",
            "freq": 2,
            "switch": true
          }
        ]
      },
      {
        "text": "64пи",
        "offset": 10,
        "length": 4,
        "options": [
          {
            "text": "64gb",
            "freq": 1,
            "switch": true
          }
        ]
      }
    ]
  }
  ...
}

Как реализовывается подобный функционал? В документации ничего нет, а в остальных источниках пишется, что раскладка заменяется до передачи запроса на поиск. Также видел, что предлагается реализация через suggest, но конкретных указаний нет.

Вопрос: как всё же это сделать?

Ответы (1 шт):

$rusLetters = ['й', 'ц'];
$engLetters = ['q', 'w'];
echo str_replace($engLetters, $rusLetters , 'qw');

→ Ссылка

Понравилась статья? Поделить с друзьями:
  • Egs ошибка установки
  • Egs ошибка соединения
  • Egs ошибка при установке 2503
  • Egs ошибка автоматического обновления
  • Egs код ошибки e10 0