日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

网站搜索功能怎么实现_电商网站上的搜索功能是如何实现的?

發布時間:2024/7/5 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 网站搜索功能怎么实现_电商网站上的搜索功能是如何实现的? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天是劉小愛自學Java的第159天。

感謝你的觀看,謝謝你。

學習計劃安排如下:

  • 索引庫本質上和數據庫類似,也是存儲數據的,既然如此自然也會有增刪改查。
  • 那么這個索引庫到底有何特別應用呢?
  • 索引庫的特別之處在于它的查詢,用戶搜索一個詞語,響應哪些對應的數據給用戶?
  • 重點是match匹配查詢和詞條查詢。

一、索引庫的增刪改查

1新增數據

①通過POST請求添加數據。

昨天我們給索引庫設定了幾個字段,以上述例子中的title字段為例,給其添加一條數據“小愛手機”,這樣后面可以通過索引庫來快速定位這條數據了。

通過響應結果可以看到result顯示的是“created”,也就是新建了一個數據。

注意:這里的請求方式是POST,昨天關于索引庫的創建時POST對應的是修改,PUT是新增,至于這兒為何是POST,暫時不清楚。

②隨機生成id

系統會隨機生成一個id來記錄這條新增的數據,但是這個id太復雜了,不好記住。

所以在新增數據時自定義id。

2自定義id

在請求路徑中指定id即可。

關于請求路徑:索引庫是liuxiaoai01,索引類型goods,id為1,添加了一條數據。

有了id之后我們就可以去進行修改和刪除數據的操作了,如果不是系統隨機的id不容易記住,使用起來不方便。

3修改數據

PUT請求就是修改了,但是要注意使用PUT必須要指定id,如果沒有會報錯。

其中關于id的作用:

  • 如果id在文檔中不存在,則新增該數據,就相當于通過POST添加了一條數據。
  • 如果id在文檔中存在,則修改對應id數據。

也通過PUT請求既能完成新增操作又能完成修改操作,一般都會直接使用PUT。

但也要知道使用POST新增數據這回事。

3刪除數據

根據id即可刪除對應的數據。

PS:觀察響應結果result的值就能看出來進行了什么操作。

  • created對應新增數據。
  • update對應修改數據。
  • delete對應刪除數據。

4查詢數據

同樣的方式,GET請求即對應的查詢操作,根據id即可查詢出對應的數據。

但是這種方法基本不會用。

要知道用戶在搜索的時候,他怎么可能知道商品對應的id是多少?

所以用戶查詢的時候是使用不到id查詢的,就需要全文檢索技術了,

二、基本的搜索

1匹配所有(match_all)

這里query代表的就是一個查詢對象,里面編寫具體的查詢條件是怎樣的:

  • match_all即代表了匹配所有,也就對應了上圖中的例子。
  • match即匹配查詢,怎么匹配可以自行說明。
  • term即詞條查詢,查詢的時候不考慮分詞。
  • ……除此之外,還有很多種查詢類型。

其中查詢條件根據查詢類型的不同會有多種不同的寫法,后續遇到了就說明。

現在主要講解下match匹配查詢和詞條查詢。

2匹配查詢(match)

為了方便測試,我向索引庫中添加了兩條數據,現在索引庫中一共有4條數據:

“小愛手機”,“大愛手機”,“超愛手機”以及“小愛電視”這4條。

match本身也就是匹配的意思,現在匹配和“小愛電視”相關的數據。

運行會發現“手機”相關的數據都被搜索出來了,這是為什么呢?

因為“小愛電視”先會被分詞成“小”“愛”以及“電視”,和分詞相關的數據都會被搜索出來。

其中響應的結果有個score屬性,也就是得分的意思:score越高表示結果越匹配,

在電商網站上搜索某品牌手機,會發現:

  • 該品牌其它產品也會被搜索出來。
  • 手機殼啊什么的也會被搜索出來。

就是這么一個道理。

and關系

operator翻譯過來是運算,意思就是將分詞結果通過and連接起來。

查詢條件是“小愛電視”,但是其被分詞為了“小”,“愛”和“電視”,當然具體是不是這樣分詞我不太清楚,但思路是一樣的:

  • 如果不做說明默認or連接,那么查詢到的數據的分詞只要滿足任意一個就可以。
  • 如果說明是and連接,那么查詢到的數據分詞必須要包含“小”,“愛”和“電視”。

3詞條匹配(term)

我們在通過詞條匹配查詢“小愛電視”會發現結果竟然一條數據都沒有。

老實說這個結果讓我很是懵逼,想了好久才明白,還不確定對不對,我大致說下:

我們在創建索引庫的時候,title這個字段名類型是text,它是會分詞的,并且分詞器是IK,這個昨天就詳細說明過。

所以今天往索引庫中添加數據“小愛電視”,它會被分詞成“小”、“愛”和“電視”。

索引庫中title這個字段是沒有“小愛電視”這個詞的,它被分詞了。

  • 用match查詢時本身也會將查詢條件分詞,所以會被查詢到。
  • 而用term查詢時不會將查詢條件分詞,所以查詢不到。

最后

行有不得反求諸己,我是@劉小愛

一個白天上班晚上學習的95后滬漂,不為其它,只為學會自律做好自己,也愿我的每日打卡能給你帶來勇氣,歡迎點贊關注和評論。

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的网站搜索功能怎么实现_电商网站上的搜索功能是如何实现的?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。