国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

ElasticSearch中文分詞和模糊查詢

這篇具有很好參考價(jià)值的文章主要介紹了ElasticSearch中文分詞和模糊查詢。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

前言

? ? ? ? ElasticSearch是一個(gè)一個(gè)分布式的實(shí)時(shí)文檔存儲,每一個(gè)字段都可以被索引與搜索,并且能支持PB級別的結(jié)構(gòu)化或者非結(jié)構(gòu)化數(shù)據(jù)。早期我們應(yīng)用的全局搜索是簡單的SQL模糊查詢,為了分擔(dān)數(shù)據(jù)庫壓力所以用了ES,選擇他的原因除了以上幾點(diǎn)外,還有其提供的API方式簡單,于任何對接的編程語言都適用。以下將以PHP的業(yè)務(wù)場景完善搜索功能。

es分詞查詢模糊匹配,php,elasticsearch,中文分詞,數(shù)據(jù)庫

環(huán)境

ThinkPHP5.1

ElasticSearch7.8

PHP7.3

功能迭代簡介

? ? ? ? 最開始的ES取代方法解決了搜索速度問題,后來新增的ik分詞器,解決了搜索詞條單一問題。單也正是中文分詞原因,對每句話都是拆解成指定粒度的詞。當(dāng)遇到單詞時(shí),一般只會對一句話里的單詞進(jìn)行拆解,而搜索時(shí)需要輸入某個(gè)字母,希望輸出的是帶字母后面的詞條,也就是模糊查詢。經(jīng)過翻閱文檔,發(fā)現(xiàn)了即時(shí)搜索。

? ? ? ?即時(shí)搜索或輸入即搜索(search-as-you-type),就是當(dāng)用戶習(xí)慣在輸完查詢內(nèi)容之前,就能為他們展現(xiàn)搜索結(jié)果,不僅能在更短的時(shí)間內(nèi)得到搜索結(jié)果,也能引導(dǎo)用戶搜索索引中真實(shí)存在的結(jié)果。例如,輸入 dvd r ,即時(shí)搜索會得到:dvd r9s 和 dvd r9sk等 , 以下將通過完整示例演示效果。

配置索引的映射

? ? ? ? 關(guān)于ElasticSearch環(huán)境搭建和基本操作在前面文章有說明,這里就假裝已經(jīng)創(chuàng)建了索引,以下是索引的映射。還有文檔的添加也是根據(jù)你自己的需求定義了,不管是定時(shí)任務(wù)還是業(yè)務(wù)節(jié)點(diǎn)觸發(fā),亦或是采集工具同步等。

{
  "mappings": {
    "_doc": {
      "properties": {
        "class_id": {
          "type": "long"
        },
        "goods_name": {
          "type": "text",
          "analyzer": "ik_smart"
        },
        "goods_sort": {
          "type": "keyword"
        },
        "id": {
          "type": "keyword"
        },
        "price": {
          "type": "long"
        },
        "single_goods_name": {
          "type": "text",
          "analyzer": "ik_max_word"
        },
        "state": {
          "type": "keyword"
        },
        "v": {
          "type": "long"
        }
      }
    }
  }
}

前臺搜索

1.? 即搜索示例

{
    "match_phrase_prefix" : {
        "brand" : {
            "query": "walker johnnie bl", 
            "slop":  10
        }
    }
}

2. 業(yè)務(wù)代碼

public function queryData($key, $sort, $from = 0, $size = 10)
{
	$from = $from * $size;
	$indexName = Env::get('elasticsearch.goods_index') ?? 'products';

	$params = [
		'index' => $indexName,
		'client' => [
			'timeout' => 10,        
			'connect_timeout' => 10
		],
		'body' => [
			'from' => $from,
			'size' => $size,
			'query' => [
				'bool' => [
					'should' => [
						[
							'multi_match' => [
								'query' => $key,
								'fields' => [
									'goods_name^2',
									'single_goods_name'
								],
							],
						],
						[
							'wildcard' => [
								'single_goods_name' => "$key*"
							]
						],
						[
							'fuzzy' => [
								'single_goods_name' => [
									'value' => $key
								]
							]
						],
						[
							'match_phrase_prefix' => [
								'single_goods_name' => "$key"
							]
						],
					],
				],
			],
			'sort' => [
				['_score' => "desc"],
				['goods_sort' => 'desc']
			],
		]
	];

	return $this->es->search($params);
}

3. 效果演示

es分詞查詢模糊匹配,php,elasticsearch,中文分詞,數(shù)據(jù)庫文章來源地址http://www.zghlxwxcb.cn/news/detail-770340.html

到了這里,關(guān)于ElasticSearch中文分詞和模糊查詢的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Elasticsearch07:ES中文分詞插件(es-ik)安裝部署

    Elasticsearch07:ES中文分詞插件(es-ik)安裝部署

    在中文數(shù)據(jù)檢索場景中,為了提供更好的檢索效果,需要在ES中集成中文分詞器,因?yàn)镋S默認(rèn)是按照英文的分詞規(guī)則進(jìn)行分詞的,基本上可以認(rèn)為是單字分詞,對中文分詞效果不理想。 ES之前是沒有提供中文分詞器的,現(xiàn)在官方也提供了一些,但是在中文分詞領(lǐng)域,IK分詞器是

    2024年02月03日
    瀏覽(27)
  • Elasticsearch專欄-5.es基本用法-分詞查詢

    Elasticsearch專欄-5.es基本用法-分詞查詢

    所謂分詞,就是把一段語句,分割成一個(gè)個(gè)單詞的過程。比如\\\"717 Hendrickson Place\\\"短語,分詞后就是三個(gè)單詞,即717、hendrickson、place。注意,分詞后的單詞默認(rèn)都是小寫。 分詞查詢,指的就是查詢時(shí),把要查詢的語句(字符串)先進(jìn)行分詞,然后拿分詞后的單詞去文檔集合中比

    2024年01月16日
    瀏覽(55)
  • elasticSearch7版本文檔中文屬性模糊查詢不準(zhǔn)確

    elasticSearch7版本文檔中文屬性模糊查詢不準(zhǔn)確

    1、問題:es文檔中的某個(gè)屬性值name的值如下所示 name\\\":\\\"catalog=Catalog(value=699015935012372480, displayName=/默認(rèn)分組), status=3, updaterName=admin, updateTime=2023-02-01 14:33:17)status:已發(fā)布” 通過java模糊查詢的api(QueryBuilders.fuzzyQuery)查詢name為“已”的時(shí)候可以查詢,查詢?yōu)椤耙寻l(fā)布”的時(shí)候查

    2024年02月02日
    瀏覽(25)
  • ElasticSearch入門:使用ES來實(shí)現(xiàn)模糊查詢功能

    本文針對在工作中遇到的需求:通過es來實(shí)現(xiàn) 模糊查詢 來進(jìn)行總結(jié);模糊查詢的具體需求是:查詢基金/A股/港股等金融數(shù)據(jù),要求可以根據(jù) 字段 , 拼音首字母 , 部分拼音全稱 進(jìn)行聯(lián)想查詢;需要注意的是,金融數(shù)據(jù)名稱中可能不止包含漢字,還有英文,數(shù)字,特殊字符等

    2023年04月09日
    瀏覽(23)
  • ES&elasticsearch-header菜鳥教程06--模糊查詢

    ES&elasticsearch-header菜鳥教程06--模糊查詢

    一 prefix前綴查詢 二 wildcard通配符查詢 三 regexp正則查詢

    2024年02月15日
    瀏覽(23)
  • Elasticsearch從入門到精通-05ES匹配查詢

    Elasticsearch從入門到精通-05ES匹配查詢

    ??作者簡介:大家好,我是程序員行走的魚 ?? 本篇主要介紹和大家一塊學(xué)習(xí)一下ES各種場景下的匹配查詢,有助于我們在項(xiàng)目中進(jìn)行綜合使用 創(chuàng)建索引并指定ik分詞器: 添加數(shù)據(jù): 需要搜索的document中的remark字段包含java和developer詞組 上述語法中,如果將operator的值改為or。則與

    2024年03月27日
    瀏覽(30)
  • ElasticSearch系列 - SpringBoot整合ES之全文搜索匹配查詢 match

    官方文檔地址:https://www.elastic.co/guide/en/elasticsearch/reference/index.html 權(quán)威指南:https://www.elastic.co/guide/cn/elasticsearch/guide/current/structured-search.html 1. 數(shù)據(jù)準(zhǔn)備 官方測試數(shù)據(jù)下載地址:https://download.elastic.co/demos/kibana/gettingstarted/accounts.zip ,數(shù)據(jù)量很大,我們自己構(gòu)造數(shù)據(jù)吧。 2. m

    2023年04月08日
    瀏覽(32)
  • Elasticsearch7.15.2 安裝ik中文分詞器后啟動ES服務(wù)報(bào)錯(cuò)的解決辦法

    Elasticsearch7.15.2 安裝ik中文分詞器后啟動ES服務(wù)報(bào)錯(cuò)的解決辦法

    下載elasticsearch ik中文分詞器,在elasticsearch安裝目錄下的plugins文件夾下創(chuàng)建名為ik的文件夾,將下載的ik中文分詞器解壓縮到新建的ik文件夾下,再次運(yùn)行 ./bin/elasticsearch啟動ES服務(wù)時(shí)出現(xiàn)以下錯(cuò)誤: Exception in thread \\\"main\\\" java.nio.file.NotDirectoryException: /Users/amelia/work/elasticsearch-7.1

    2024年02月12日
    瀏覽(33)
  • ElasticSearch系列 - SpringBoot整合ES:短語匹配查詢 match_phrase

    1. ElasticSearch match_phrase查詢是什么?它與match查詢有什么區(qū)別? match_phrase查詢是一種用于匹配短語的查詢方式,可以用于精確匹配多個(gè)單詞組成的短語。它會將查詢字符串分解成單詞,然后按照順序匹配文檔中的單詞,只有當(dāng)文檔中的單詞順序與查詢字符串中的單詞順序完全

    2024年02月12日
    瀏覽(18)
  • ElasticSearch關(guān)于自定義分詞器模糊檢索數(shù)字+字母

    ElasticSearch關(guān)于自定義分詞器模糊檢索數(shù)字+字母

    之前的系統(tǒng)由于一些表的數(shù)據(jù)已經(jīng)達(dá)到1~2百萬行的數(shù)據(jù)了,而且還在與日俱增,一些條件比較復(fù)雜的檢索,已經(jīng)明顯感覺到比較慢,影響用戶的使用體驗(yàn)。所以引入的ElasiticSearch進(jìn)行檢索優(yōu)化,效果還是比較好的。因?yàn)橹岸紱]有怎么涉及到模糊檢索這一塊需求,只是為了速

    2024年02月16日
    瀏覽(18)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包