使用fuse.js進(jìn)行搜索

項(xiàng)目使用了react+gatsby進(jìn)行生產(chǎn)靜態(tài)html文件,而gatsby官方推薦的elasticlunr搜索插件對(duì)中文并不友好,
并且在對(duì)比后發(fā)現(xiàn)雖然是可以在gatsby-config文件中配置,但與配置fuse.js差距不大

fuse.js
之所以能匹配中文其實(shí)是通過(guò)設(shè)置模糊搜索實(shí)現(xiàn)的,相對(duì)的會(huì)導(dǎo)致英文搜索結(jié)果特別多,因?yàn)槌霈F(xiàn)相同的字符都會(huì)視為匹配
模糊搜索程度通過(guò)threshold大小決定
includeMatches會(huì)使搜索結(jié)果出現(xiàn)匹配字段的下標(biāo),通過(guò)這個(gè)可以設(shè)置高亮
shouldSort使搜索結(jié)果按匹配程度排序,但在同一篇文章中的匹配下標(biāo)依然是按順序輸出,所以需要做處理

設(shè)置高亮具體流程為:
首先,文章的搜索結(jié)果需要截取一段存在高亮部分,而不是顯示全部,
同一篇文章fuse.js的搜索結(jié)果沒(méi)有排序,截取的一段最終定為一篇文章中匹配長(zhǎng)度最長(zhǎng)的字段,
并截取這個(gè)字段往前的10個(gè)字符(除往前不足10個(gè)字符),再往前就不需要
把文章切割成數(shù)組,通過(guò)循環(huán)設(shè)置高亮

代碼待整理

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 概要 64學(xué)時(shí) 3.5學(xué)分 章節(jié)安排 電子商務(wù)網(wǎng)站概況 HTML5+CSS3 JavaScript Node 電子...
    阿啊阿吖丁閱讀 9,793評(píng)論 0 3
  • JavaScript語(yǔ)言精粹 前言 約定:=> 表示參考相關(guān)文章或書籍; JS是JavaScript的縮寫。 本書...
    微笑的AK47閱讀 654評(píng)論 0 3
  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,696評(píng)論 0 5
  • 揭開(kāi)正則表達(dá)式的神秘面紗(轉(zhuǎn)) 關(guān)閉高亮 [原創(chuàng)文章,轉(zhuǎn)載請(qǐng)保留或注明出處:http://www.regexlab...
    螃蟹六步郎閱讀 379評(píng)論 0 0
  • 舔狗們的愛(ài)情,那些詩(shī)句中的憧憬與失落。 愛(ài)情,是個(gè)永恒的話題,男男女女魂?duì)繅?mèng)繞的夢(mèng)中情人,見(jiàn)到他/她的一剎那,空氣...
    連島笑笑生閱讀 398評(píng)論 0 0

友情鏈接更多精彩內(nèi)容