Skip to content

Instantly share code, notes, and snippets.

@Barolina
Last active August 24, 2023 18:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Barolina/afbc2986557cd96b7287e5d92b2e1186 to your computer and use it in GitHub Desktop.
Save Barolina/afbc2986557cd96b7287e5d92b2e1186 to your computer and use it in GitHub Desktop.
Контекстный поиск c opensearch
# 1. Создать  правила индексации, опеределив  свой  аналайзер и  правила   формирования  токенов

PUT back_ed_test1
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_analyzer":{
          "tokenizer":"tokenizer",
          "type": "russian" // по русским текстам 
        }
      },
      "tokenizer":{
       "tokenizer":{
         "type":"ngram"  // для  частичного  или  нечеткого поиска
       }
    }
  }
  }
}

# 2. Определить  поля с которые  будут использовать наш аналайзер выше 
PUT back_ed_test1/_mapping
{
   "properties":{
      "suggest_field":{
           "type":"completion"  // для  автодополнения
       },
       "name": {
         "type": "text",
         "analyzer": "my_analyzer"
       }
   }
}

# 3. Если  есть существующие данные, и их необходимо переиндексировать 
POST _reindex
{
  "source": {
    "index": "back_ed_test"
  },
  "dest": {
    "index": "back_ed_test1"
  }
}

# 4. Поиск по фразе,  соблюдая последовательность слов
GET  back_ed_test1/_search
{
  "query": {
    "match_phrase": {
      "name": 
      {
        "query": "№ 608",
        "slop": 10
      }
    }
  }
}



P.S. не плохой источник, для поиска решений https://checkups.opster.com/ops-gpt/conversation/12223

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment