Как использовать токен-фильтрasticsearch min_hash? - PullRequest
0 голосов
/ 08 января 2019

Я хочу использовать токен-фильтр min_hash для поиска похожих документов.

В конце концов, я бы хотел достичь отдельного поля minhash. Чтобы в данном документе я мог использовать его поле minhash для поиска похожих документов.

Буду признателен за совет для любого другого сценария, который решает проблему.

Я могу создать собственный анализатор, создать сопоставления для добавления minhash к инвертированному индексу. Со следующим кодом.

PUT /my_index
{
  "index": {
    "analysis": {
      "analyzer": {
        "minhash_analyzer": {
          "type": "custom",
          "tokenizer": "standard",
           "filter": [
             "min_hash"
           ]
        }
      }
    }
  }
}

PUT my_index/_doc/_mapping
{
  "properties": {
    "description": {
      "type": "text",
      "analyzer": "minhash_analyzer"
    }
  }
}


PUT my_index/_doc/1
{
  "description": "sample text"
}

GET my_index/_doc/1

Я могу проверить свой анализатор, чтобы убедиться, что он работает правильно:

POST my_index/_analyze
{
  "analyzer": "minhash_analyzer",
  "text": "sample text"
}

, который возвращает мне ответ:

{
  "tokens" : [
    {
      "token" : "쵴ᏸ飖荺氁㐫ﴯ틖",
      "start_offset" : 0,
      "end_offset" : 11,
      "type" : "MIN_HASH",
      "position" : 0
    },
    {
      "token" : "쵴ᏸ飖荺氁㐫ﴯ틖",
      "start_offset" : 0,
      "end_offset" : 11,
      "type" : "MIN_HASH",
      "position" : 0
    },
    ...
    {
      "token" : "쵴ᏸ飖荺氁㐫ﴯ틖",
      "start_offset" : 0,
      "end_offset" : 11,
      "type" : "MIN_HASH",
      "position" : 0
    }]
}

Проблема в том, что в данном сценарии я не могу получить фактическое значение minhash для документа (например, строки в кодировке base64).

Какой-нибудь совет, чтобы решить проблему?

...