最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

docusaurus如何添加一個搜索功能

 更新時間:2024年04月19日 09:16:05   作者:flydean程序那些事  
這篇文章主要介紹了docusaurus如何添加一個搜索功能,本文通過實例圖文相結(jié)合給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧

如果algolia不能自動配置的話,我教你手動給docusaurus添加一個搜索

新版博客用docusaurus重構(gòu)已經(jīng)有些日子了,根據(jù)docusaurus的文檔上也申請了Algolia,想一勞永逸的解決博客的搜索問題。但是流水有意,落花無情。

algolia總是不給我回復(fù),我只能對著algolia的申請頁面仰天長嘆。

正常情況的申請

按照docusaurus官方文檔上說的,當(dāng)我們需要搜索的時候,打開https://docsearch.algolia.com/apply/填一下申請,提交就行了。

但是可惜的是,我填好資料,點這個join the program很多次了,就是沒有反應(yīng)。

怎么辦呢?我仔細檢查了它的官方文檔,看他的描述說是需要等待2個星期。但是2個星期實在太久了,在我們只爭朝夕的今天,怎么行。

還好,我看到它還有一種手動上傳的辦法,笨是笨了點,總比沒有的好。那就開始吧。

手動上傳

首先我們得去Algolia上注冊一個賬號,然后在這里需要創(chuàng)建一個應(yīng)用:

應(yīng)用的旁邊,需要創(chuàng)建一個index用來存儲搜索數(shù)據(jù):

這樣,前期的準備工作就做好了。

再在api設(shè)置中找到APPLICATION_ID和API_KEY。把他們保存到.env文件中:

APPLICATION_ID=YOUR_APP_ID
API_KEY=YOUR_API_KEY

注意,這里的API_KEY最好是Admin API Key,因為會有一些權(quán)限需要。

如果是Admin API Key的話,記得不要分享給別人,這個key的權(quán)限比較大,可以刪除和更新你的index數(shù)據(jù)。

設(shè)置配置文件

接下來,我們還需要一個配置文件。用來配置爬蟲信息。下面是一個最基本的配置信息。

{
  "index_name": "example",
  "start_urls": ["https://www.example.com/docs"],
  "selectors": {
    "lvl0": "#content header h1",
    "lvl1": "#content article h1",
    "lvl2": "#content section h3",
    "lvl3": "#content section h4",
    "lvl4": "#content section h5",
    "lvl5": "#content section h6",
    "text": "#content header p,#content section p,#content section ol"
  }
}

其中index_name就是我們剛剛在網(wǎng)站上創(chuàng)建的index_name。當(dāng)DocSearch scraper程序跑起來的時候,你會發(fā)現(xiàn)有一個臨時的index_name + _tmp 索引被創(chuàng)建。

別擔(dān)心,在程序執(zhí)行完畢之后,會把這個tmp index會替換最終的index。

start_urls包含的是要開始爬取的鏈接地址。爬蟲會循環(huán)爬取鏈接里面的a標(biāo)簽,除非是遇到了stop_urls。另外爬蟲不會爬取其他域名的鏈接。

selectors是用于創(chuàng)建記錄層次結(jié)構(gòu)的所有 CSS 選擇器。其中text是強制,必須要有的。

如果你對不同的url有不同的selector方案,那么可以給不同的url配置不同的selectors_key,如下所示:

{
  "start_urls": [
    {
      "url": "http://www.example.com/docs/faq/",
      "selectors_key": "faq"
    },
    {
      "url": "http://www.example.com/docs/"
    }
  ],
  […],
  "selectors": {
    "default": {
      "lvl0": ".docs h1",
      "lvl1": ".docs h2",
      "lvl2": ".docs h3",
      "lvl3": ".docs h4",
      "lvl4": ".docs h5",
      "text": ".docs p, .docs li"
    },
    "faq": {
      "lvl0": ".faq h1",
      "lvl1": ".faq h2",
      "lvl2": ".faq h3",
      "lvl3": ".faq h4",
      "lvl4": ".faq h5",
      "text": ".faq p, .faq li"
    }
  }
}

好了,基本的配置就這些了。

運行爬蟲腳本

現(xiàn)在可以運行爬蟲腳本了,這里有兩個選擇,一是跑docker,方便快捷。二是從源代碼運行,這個就比較麻煩了。

這里我只是希望博客可以有搜索功能,所以源碼什么的就算了吧,我們直接跑docker命令:

run -it --env-file=.env -e "CONFIG=$(cat flydean.conf | jq -r tostring)" algolia/docsearch-scraper

過一會就運行起來了。但是我們看看日志:

DocSearch: http://www.flydean.com/07-python-module/ 0 records)
DocSearch: http://www.flydean.com/08-python-io/ 0 records)
DocSearch: http://www.flydean.com/09-python-error-exception/ 0 records)
DocSearch: http://www.flydean.com/06-python-data-structure/ 0 records)

Crawling issue: nbHits 0 for myblog

nb_hits表示的是DocSearch 提取和索引的記錄數(shù)。

怎么是0 records?難道什么都沒有爬到?

直覺是我的start_urls不太對,我們把它換成sitemap.xml再試一次:

{
  "sitemap_urls": ["http://www.example.com/docs/sitemap.xml"]
}

還是同樣的錯誤。

沒辦法,再去仔細讀一下配置文件的說明。

終于發(fā)現(xiàn)了問題,原來這里的selectors寫的有問題,#content header h1表示的是在ID為content的元素內(nèi)部,尋找所有屬于header類的元素,并在這些元素內(nèi)部尋找所有的<h1>元素。但是在docusaurus V3版本中已經(jīng)發(fā)生了變化。

我們把它改寫成這樣:

  "selectors": {
    "lvl0": {
      "selector": ".menu__link--sublist.menu__link--active",
      "global": true,
      "default_value": "Documentation"
    },
    "lvl1": "header h1",
    "lvl2": "article h2",
    "lvl3": "article h3",
    "lvl4": "article h4",
    "lvl5": "article h5",
    "lvl6": "article h6",
    "text": "article p, article li"
  },

再運行一次,這次終于有數(shù)據(jù)了。

回到網(wǎng)站上看看,已經(jīng)有數(shù)據(jù)上傳上來了:

好了,我們在docusaurus.config.ts中配置一下,看看效果:

algolia: {
        // The application ID provided by Algolia
        appId: 'YOUR_APP_ID',
        // Public API key: it is safe to commit it
        apiKey: 'YOUR_SEARCH_API_KEY',
        indexName: 'YOUR_INDEX_NAME',
        // Optional: see doc section below
        contextualSearch: true,
        // Optional: Algolia search parameters
        searchParameters: {},
        // Optional: path for search page that enabled by default (`false` to disable it)
        searchPagePath: 'search',
        //... other Algolia params
      },

我們在網(wǎng)站上試試效果:

完美,遇到問題的小伙伴可以私信我喲!

到此這篇關(guān)于docusaurus添加一個搜索的文章就介紹到這了,更多相關(guān)docusaurus搜索內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 在Maven下代理服務(wù)器設(shè)定的方式

    在Maven下代理服務(wù)器設(shè)定的方式

    今天小編就為大家分享一篇關(guān)于在Maven下代理服務(wù)器設(shè)定的方式,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • 從零開始學(xué)SpringBoot如何開始使用圖文詳解

    從零開始學(xué)SpringBoot如何開始使用圖文詳解

    這篇文章主要介紹了從零開始學(xué)SpringBoot如何開始使用,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • JAVA正則表達式匹配多個空格的解決方案

    JAVA正則表達式匹配多個空格的解決方案

    這篇文章主要介紹了JAVA正則表達式匹配多個空格的解決方案,文中提到了()和[]本質(zhì)的區(qū)別,本文給大家講解的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-11-11
  • IDEA 創(chuàng)建一個Mybatis Maven項目的方法步驟(圖文)

    IDEA 創(chuàng)建一個Mybatis Maven項目的方法步驟(圖文)

    這篇文章主要介紹了IDEA 創(chuàng)建一個Mybatis Maven項目的方法步驟(圖文),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • MyBatis多表操作查詢功能

    MyBatis多表操作查詢功能

    這篇文章主要介紹了MyBatis多表操作,包括一對一查詢,一對多查詢的模型,多對多查詢的需求,本文通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2021-11-11
  • Java中LinkedHashSet的源碼剖析

    Java中LinkedHashSet的源碼剖析

    這篇文章主要介紹了Java中LinkedHashSet的源碼剖析,LinkedHashSet是HashSet的子類,LinkedHashSet底層是一個LinkedHashMap,底層維護了一個數(shù)組+雙向鏈表,需要的朋友可以參考下
    2023-09-09
  • JavaBean valication驗證實現(xiàn)方法示例

    JavaBean valication驗證實現(xiàn)方法示例

    這篇文章主要介紹了JavaBean valication驗證實現(xiàn)方法,結(jié)合實例形式分析了JavaBean valication驗證相關(guān)概念、原理、用法及操作注意事項,需要的朋友可以參考下
    2020-03-03
  • 基于java實現(xiàn)一個脫敏組件

    基于java實現(xiàn)一個脫敏組件

    這篇文章主要為大家詳細介紹了如何基于java實現(xiàn)一個脫敏組件,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-11-11
  • Java 中Json中既有對象又有數(shù)組的參數(shù)如何轉(zhuǎn)化成對象(推薦)

    Java 中Json中既有對象又有數(shù)組的參數(shù)如何轉(zhuǎn)化成對象(推薦)

    Gson庫是一個功能強大、易于使用的Java序列化/反序列化庫,它提供了豐富的API來支持Java對象和JSON之間的轉(zhuǎn)換,這篇文章主要介紹了Java 中Json中既有對象又有數(shù)組的參數(shù)如何轉(zhuǎn)化成對象,需要的朋友可以參考下
    2024-07-07
  • java 類加載與自定義類加載器詳解

    java 類加載與自定義類加載器詳解

    本文主要介紹了java 類加載與自定義類加載器。具有一定的參考價值,下面跟著小編一起來看下吧
    2017-01-01

最新評論

锡林浩特市| 双鸭山市| 寿宁县| 万载县| 宜宾县| 肥西县| 聂荣县| 泰兴市| 南汇区| 华阴市| 垣曲县| 沈阳市| 陕西省| 绥芬河市| 衡南县| 麻阳| 嘉义县| 湾仔区| 岳西县| 石城县| 灌阳县| 高要市| 大冶市| 永德县| 德州市| 泰安市| 云梦县| 大港区| 洮南市| 蕉岭县| 石柱| 正镶白旗| 萍乡市| 双鸭山市| 醴陵市| 合川市| 昌黎县| 峨山| 吉木乃县| 承德县| 抚州市|