Descarga e instalación de tokenizer ES ik, prueba

Antes de crear el índice y los datos de consulta, usamos el tokenizador predeterminado. El efecto de segmentación de palabras no es ideal. El campo de texto se dividirá en un carácter chino y luego la oración buscada se segmentará al realizar la búsqueda, por lo que es necesario aquí Ahora está disponible un tokenizador IK más inteligente.

 

Primero: Dirección de descarga: https://github.com/medcl/elasticsearch-analysis-ik/releases  , aquí necesitas descargar la versión correspondiente de IK según tu versión Es, aquí estoy usando 6.3.2 ES, así que descarga el archivo ik-6.3.2.zip.

Segundo: Descomprima -> Cree un directorio ik bajo el directorio de instalación es / plugin /, y luego copie el archivo en ik. Una vez completado, el efecto es el siguiente:

Esto se ha completado, no es necesario ir al archivo elasticsearch.yml de elasticSearch para configurar.

Tercero: reinicie ElasticSearch

Cuarto: resultados de la prueba

#Insertar datos de prueba

PUT libro / analizar / 1
{   "texto": "Soy chino" }

Pruebe el efecto de la segmentación de palabras cuando no se utiliza el tokenizador ik:

 

POST book / _analyze 
{ 
  "text": "我 是 中国 人" 
} 
// 结果 是 :
{ 
  "tokens": [ 
    { 
      "token": "我", 
      "start_offset": 0, 
      "end_offset": 1, 
      "type ":" <IDEOGRAPHIC> ", 
      " position ": 0 
    }, 
    { 
      " token ":" 是 ", 
      " start_offset ": 1, 
      " end_offset ": 2, 
      " type ":" <IDEOGRAPHIC> ", 
      " position ": 1 
    }, 
    { 
      "token": "中", 
      "start_offset": 2, 
      "end_offset": 3, 
      "type": "<IDEOGRAPHIC>", 
      "position": 2 
    }, 
    {
      "token": "国",
      "start_offset": 3, 
      "end_offset": 4, 
      "type": "<IDEOGRAPHIC>", 
      "position": 3 
    }, 
    { 
      "token": "人", 
      "start_offset": 4, 
      "end_offset": 5, 
      "tipo": "<IDEOGRÁFICO>", 
      "posición": 4 
    } 
  ] 
}

 

Después de usar el tokenizador IK, los resultados son los siguientes:

 

POST book_v6 / _analyze 
{ 
  "analyzer": "ik_max_word", 
  "text": "我 是 中国 人" 
} 
// 结果 如下 :
{ 
  "tokens": [ 
    { 
      "token": "我", 
      "start_offset": 0, 
      "end_offset": 1, 
      "type": "CN_CHAR", 
      "position": 0 
    }, 
    { 
      "token": "是", 
      "start_offset": 1, 
      "end_offset": 2, 
      "type": "CN_CHAR", 
      "posición": 1 
    }, 
    { 
      "token": "中国 人",
      "start_offset": 2, 
      "end_offset": 5, 
      "type": "CN_WORD", 
      "position": 2 
    },
    { 
      "token": "中国", 
      "start_offset": 2, 
      "end_offset": 4, 
      "type": "CN_WORD", 
      "position": 3 
    }, 
    { 
      "token": "国人", 
      "start_offset": 3 , 
      "end_offset": 5, 
      "tipo": "CN_WORD", 
      "posición": 4 
    } 
  ] 
}

Explicación de los efectos de segmentación de dos palabras anteriores:

1. Si el tokenizador ik no está instalado, entonces, si escribe "analizador": "ik_max_word", el programa informará un error porque no tiene el tokenizador ik instalado.

2. Si instala el tokenizador ik, no especifica el tokenizador y no agrega la oración "analizador": "ik_max_word", entonces el efecto de segmentación de palabras es el mismo que si no instalara el tokenizador ik, y la palabra La segmentación también se divide en cada uno de los caracteres chinos.

2. Crea un índice para el tokenizador especificado.

Una vez creado el índice, puede utilizar ik para la segmentación de palabras. Cuando utilice la búsqueda ES, también utilizará ik para la segmentación de palabras y la coincidencia de frases de búsqueda.

 

PUT book_v5 
{ 
  "settings": { 
    "number_of_shards": "6", 
    "number_of_replicas": "1",   
     // 指定 分 词 器  
    "analysis": {    
      "analyzer": { 
        "ik": { 
          "tokenizer": "ik_max_word " 
        } 
      } 
    } 
  }, 
  " mappings ": { 
    " novel ": { 
      " properties ": { 
        " author ": { 
          " type ":" text " 
        }, 
        " wordCount ": { 
          " type ":" integer " 
        },
        "publishDate": { 
          "type": "date", 
          "format": "aaaa-MM-dd HH: mm: ss || aaaa-MM-dd" 
        },
        "briefIntroduction": { 
          "type": "text" 
        }, 
        "bookName": { 
          "type": "text" 
        } 
      } 
    } 
  } 
}            

Sobre el tipo de segmentación de palabras del tokenizador ik (puede elegir según sus necesidades):

ik_max_word: el texto se dividirá con la máxima granularidad, por ejemplo, el "Himno nacional de la República Popular de China" se dividirá en "República Popular de China, Pueblo chino, China, Chino, República Popular, Pueblo, Pueblo, Pueblo, República, República, Él, la Patria, el Himno Nacional "agotará todas las combinaciones posibles;

ik_smart: Hará la resolución más burda, como dividir el "Himno Nacional de la República Popular de China" en "El Himno Nacional de la República Popular de China". como sigue:

 

POST book_v6 / _analyze 
{ 
  "analyzer": "ik_smart", 
  "text": "我 是 中国 人" 
} 
// 结果
{ 
  "tokens": [ 
    { 
      "token": "我", 
      "start_offset": 0, 
      "end_offset ": 1, 
      " tipo ":" CN_CHAR ", 
      " posición ": 0 
    }, 
    { 
      " token ":" 是 ", 
      " start_offset ": 1, 
      " end_offset ": 2, 
      " tipo ":" CN_CHAR ", 
      " posición ": 1 
    }, 
    { 
      " token ":" 中国 人 ",
      "start_offset": 2, 
      "end_offset": 5, 
      "type": "CN_WORD", 
      "position": 2 
    }
  ] 
}

- Este artículo se transfiere desde: https://www.cnblogs.com/chenmc/p/9525163.html

Supongo que te gusta

Origin blog.csdn.net/yabignshi/article/details/114480815
Recomendado
Clasificación