????????原理:分詞的原理:二叉樹? ? ? ??
????????首先講一下為什么要出這個(gè)文章,前面我們講過(guò)分詞方法:中文分詞搜索 pscws(感興趣的同學(xué)可以去爬樓看一下),那為什么要講IK分詞?最主要的原因是:pscws分詞顆粒度不如IK分詞的顆粒度高,現(xiàn)在的需求要求顆粒度細(xì)一點(diǎn),以便提高搜索進(jìn)度,所以我們今天講一下IK分詞
? ? ? ? 第一步:安轉(zhuǎn)Elasticsearch,這個(gè)在博主原來(lái)的文章里面有,所以不在講述,安裝完成后運(yùn)行結(jié)果:
訪問(wèn)地址:http://localhost:9200
????????第二步:安轉(zhuǎn)IK擴(kuò)展(現(xiàn)在下載擴(kuò)展包):需要選擇和自己的Elasticsearch對(duì)應(yīng)的版本,我的Elasticsearch版本是7.3.2,下載后存放在:/plugins 目錄下:
? ? ? ? 下載地址:https://gitcode.net/mirrors/medcl/elasticsearch-analysis-ik/-/tree/v7.3.2
? ? ? ? 直接運(yùn)行會(huì)發(fā)現(xiàn)閃退情況:為什么會(huì)出現(xiàn)這樣的情況,主要有兩個(gè)原因:
? ? ? ? 1.版本不配
? ? ? ? 2.未修改配置 ,配置如何修改?
? ? ? ? 需要安裝 maven 包管理工具,這個(gè)是JAVA開發(fā)的,所以需要安裝JAVA的環(huán)境(IK 分詞器需要 Java 8 或者以上的版本)??
????????一、下載&安裝
????????1. 下載地址
????????maven下載地址如下,各位請(qǐng)選擇對(duì)應(yīng)系統(tǒng)的maven版本進(jìn)行下載。
????????https://maven.apache.org/download.cgi
????????2. 解壓maven安裝包
????????maven安裝包下載之后,對(duì)其進(jìn)行解壓。
????????二、配置環(huán)境變量:
?? ??? ?系統(tǒng)變量新增:變量名:MAVEN_HOME ? 值:maven存放目錄
?? ??? ?系統(tǒng)變量追加:變量名:path ? ? ? ? 值:%MAVEN_HOME%\bin
?? ??? ?測(cè)試maven是否配置完畢:輸入mvn -v命令,如果出現(xiàn)maven版本號(hào),就表明安裝成功。
?? ??? ?如果報(bào)錯(cuò):
?? ??? ?配合:The JAVA_HOME environment variable is not defined correctly This environment variable is needed to run this program NB: JAVA_HOME should point to a JDK not a JRE
?? ??? ?沒(méi)有安裝Java的運(yùn)行環(huán)境或者JAVA_HOME的環(huán)境變量沒(méi)有配置,安裝好JAVA的運(yùn)行環(huán)境后記得配置JAVA_HOME環(huán)境變量,安裝好后,再運(yùn)行mvn -v命令????????
查看命令:elasticSearch-plugin list:安裝成功
第三步:使用分詞(PHP版本):
//引入自動(dòng)加載文件
require_once APPPATH.'../vendor/es/autoload.php';
//使用命名空間引用
use Elasticsearch\ClientBuilder;
class Test extends CI_Controller
{
? ? //初始化
? ? public function __construct()
? ? {
? ? ? ? parent::__construct();
? ? ? ? //拼接參數(shù)
? ? ? ? $params = [
? ? ? ? ? ? [
? ? ? ? ? ? ? ? 'host' ? => '地址',
? ? ? ? ? ? ? ? 'port' ? => '端口號(hào)',
? ? ? ? ? ? ? ? 'scheme' => 'http',
? ? ? ? ? ? ? ? 'user' ? => '用戶名',
? ? ? ? ? ? ? ? 'pass' ? => '密碼'
? ? ? ? ? ? ]
? ? ? ? ];
?? ??? ??? ??? ?//初始化對(duì)象
? ? ? ? $this->client = ClientBuilder::create()->setHosts($params)->setConnectionPool('連接池地址(相對(duì)地址)', [])?->setRetries(10)->build();
? ? }
?? ??? ?
?? ??? ?//分詞器
? ? public function ik(){
? ? ? ? ?$params = [
? ? ? ? ? ? 'body' => [
? ? ? ? ? ? ? ? 'text' => '中國(guó)上海市直轄市靜安區(qū)',
? ? ? ? ? ? ? ? //ik_max_word 精細(xì) ?ik_smart 粗略
? ? ? ? ? ? ? ? 'analyzer'=>'ik_max_word'
? ? ? ? ? ? ]
? ? ? ? ];
?? ??? ??? ??? ?//請(qǐng)求分詞
? ? ? ? $res = ?$this->client->indices()->analyze($params);
? ? ? ? var_dump($res);die;
? ? }
}
IK精細(xì)分詞輸出結(jié)果:
??array(11) {
????[0]=>array(5) {
?? ??? ?["token"]=>string(6) "中國(guó)"["start_offset"]=>int(0)["end_offset"]=>int(2)?
?? ??? ?["type"]=>string(7) "CN_WORD"["position"]=>int(0)
?? ??? ?}
????[1]=>array(5) {
?? ??? ?["token"]=>string(9) "上海市"["start_offset"]=>int(2)["end_offset"]=>int(5)
?? ??? ?["type"]=>string(7) "CN_WORD"["position"]=>int(1)
?? ??? ?}
????[2]=>array(5) {
?? ??? ?["token"]=>string(6) "上海"["start_offset"]=>int(2)["end_offset"]=>int(4)
?? ??? ?["type"]=>string(7) "CN_WORD"["position"]=>int(2)
?? ??? ?}
????[3]=>array(5) {
?? ??? ?["token"]=>string(6) "海市" ["start_offset"]=>int(3)["end_offset"]=>int(5)
?? ??? ?["type"]=>string(7) "CN_WORD"["position"]=>int(3)
?? ??? ?}
????[4]=>array(5) {
?? ??? ?["token"]=>string(6) "市直" ["start_offset"]=>int(4)["end_offset"]=>int(6)
?? ??? ?["type"]=> string(7) "CN_WORD"["position"]=>int(4)
?? ??? ?}?? ?
????[5]=>array(5) {
?? ??? ?["token"]=>string(9) "直轄市"["start_offset"]=>int(5)["end_offset"]=>int(8)
?? ??? ?["type"]=>string(7) "CN_WORD"["position"]=>int(5)
?? ??? ?}
????[6]=>array(5) {
?? ??? ?["token"]=> string(6) "直轄"["start_offset"]=> int(5)["end_offset"]=>int(7)
?? ??? ?["type"]=>string(7) "CN_WORD"["position"]=>int(6)
?? ??? ?}
????[7]=>array(5) {
?? ??? ?["token"]=>string(3) "市"["start_offset"]=>int(7)["end_offset"]=>int(8)
?? ??? ?["type"]=>string(7) "CN_CHAR"["position"]=>int(7)?
?? ??? ?}
????[8]=> array(5) {
?? ??? ?["token"]=>string(9) "靜安區(qū)" ["start_offset"]=>int(8)["end_offset"]=> int(11)
?? ??? ?["type"]=>string(7) "CN_WORD"["position"]=>int(8)
?? ??? ?}
????[9]=>array(5) {?
?? ??? ?["token"]=>string(6) "靜安" ["start_offset"]=>int(8)["end_offset"]=>int(10)
?? ??? ?["type"]=>string(7) "CN_WORD" ["position"]=>int(9)?
?? ??? ?}
????[10]=>array(5) {
?? ??? ?["token"]=>string(3) "區(qū)"["start_offset"]=>int(10)["end_offset"]=>int(11)
?? ??? ?["type"]=>string(7) "CN_CHAR"["position"]=>int(10)?
?? ??? ?}
??}
}
IK粗略分詞:
array(1) {
??["tokens"]=>
??array(11) {
????[0]=>array(5) {
?? ??? ?["token"]=>string(6) "中國(guó)"["start_offset"]=>int(0)["end_offset"]=>int(2)?
?? ??? ?["type"]=>string(7) "CN_WORD"["position"]=>int(0)
?? ??? ?}
????[1]=>array(5) {
?? ??? ?["token"]=>string(9) "上海市"["start_offset"]=>int(2)["end_offset"]=>int(5)
?? ??? ?["type"]=>string(7) "CN_WORD"["position"]=>int(1)
?? ??? ?}
????[2]=>array(5) {
?? ??? ?["token"]=>string(9) "直轄市"["start_offset"]=>int(5)["end_offset"]=>int(8)
?? ??? ?["type"]=>string(7) "CN_WORD"["position"]=>int(5)
?? ??? ?}
????[3]=> array(5) {
?? ??? ?["token"]=>string(9) "靜安區(qū)" ["start_offset"]=>int(8)["end_offset"]=> int(11)?
?? ??? ?["type"]=>string(7) "CN_WORD"["position"]=>int(8)
?? ??? ?}
??}
}
中文分詞搜索 pscws
array(4) {?
["中國(guó)"]=> array(4) {?
?? ?["word"]=> string(6) "中國(guó)"?
?? ?["times"]=> int(1) ["weight"]=> float(6.2600002288818) ["attr"]=> string(3) "ns"?
}?
["上海市"]=> array(4) {?
?? ?["word"]=> string(9) "上海市"?
?? ?["times"]=> int(1) ["weight"]=> float(7.8200001716614) ["attr"]=> string(3) "ns"?
}?
["直轄市"]=> array(4) {?
?? ?["word"]=> string(9) "直轄市"?
?? ?["times"]=> int(1) ["weight"]=> float(6.8499999046326) ["attr"]=> string(3) "n"?
}?
["靜安區(qū)"]=> array(4) {?
?? ?["word"]=> string(9) "靜安區(qū)"
?? ?["times"]=> int(1) ["weight"]=> float(12.140000343323) ["attr"]=> string(3) "ns"?
?}
}文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-695579.html
????????至此IK分詞器講解完成,可以對(duì)比一下IK與pscws的區(qū)別,后續(xù)操作可以根據(jù)自己的業(yè)務(wù)來(lái)確定文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-695579.html
到了這里,關(guān)于Elasticsearch 全文搜索引擎 ---- IK分詞器的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!