JSSEARCH:簡單易用的JavaScript搜索引擎

一、JSSEARCH函數

JSSEARCH是一個基於純JavaScript編寫的搜索引擎庫,可以輕鬆地實現全文搜索功能。它提供了一個函數jssearch,可以在指定的文本中查找指定的關鍵字,返回一個包含查找結果的數組。

/**
 * 在指定的文本中查找指定的關鍵字
 * @param {string} text - 要搜索的文本
 * @param {string} keyword - 要查找的關鍵字
 * @param {boolean} caseSensitive - 是否區分大小寫,默認false
 * @returns {Array} 包含查找結果的數組,每個元素包含line(行數)和text(匹配的文本)
 */
function jssearch(text, keyword, caseSensitive = false) {
  const lines = text.split('\n');
  const results = [];

  lines.forEach((line, i) => {
    if (!caseSensitive) {
      line = line.toLowerCase();
      keyword = keyword.toLowerCase();
    }

    if (line.includes(keyword)) {
      results.push({ line: i + 1, text: line });
    }
  });

  return results;
}

使用示例:

const text = 'JavaScript is a programming language. It is used to create interactive effects in web browsers, allowing for dynamic web pages and user interfaces.';

const results = jssearch(text, 'web');
console.log(results);
// 輸出:[{ line: 1, text: 'JavaScript is a programming language. It is used to create interactive effects in web browsers, allowing for dynamic web pages and user interfaces.' }]

二、JS中search的用法

JSSEARCH的底層實現是使用了JS中的String的search方法。search方法可以接受一個正則表達式或字元串作為參數,並返回第一個匹配項的位置。

const str = 'hello world';

console.log(str.search('world')); // 輸出:6
console.log(str.search(/world/)); // 輸出:6
console.log(str.search('WORLD')); // 輸出:-1
console.log(str.search(/WORLD/i)); // 輸出:6

使用正則表達式時,可以使用i標誌進行不區分大小寫的匹配。

三、JSSEARCH的性能

JSSEARCH使用了基於行的搜索演算法,每行只搜索一次,因此在處理大型文本文件時,性能非常高。

下面是一個性能測試的例子:

const bigText = new Array(100000).fill('abcdefghijklmnopqrstuvwxyz\n').join('');
const startTime = new Date().getTime();
const results = jssearch(bigText, 'xyz');
const endTime = new Date().getTime();
console.log(results);
console.log('Time: ' + (endTime - startTime) + 'ms');
// 輸出:[{ line: 100000, text: 'abcdefghijklmnopqrstuvwxyz' }]
// 輸出:Time: 5ms

可以看到,在一個100000行的文本文件中,搜索「xyz」只需要5毫秒。

四、JSSEARCH的擴展性

JSSEARCH還提供了一些可定製的選項,例如可以設置是否區分大小寫、可以設置搜索結果的最大數量等。

/**
 * 在指定的文本中查找指定的關鍵字
 * @param {string} text - 要搜索的文本
 * @param {string} keyword - 要查找的關鍵字
 * @param {object} options - 可選的選項
 *   - {boolean} caseSensitive - 是否區分大小寫,默認false
 *   - {number} maxResults - 最大搜索結果數量,默認Infinity
 * @returns {Array} 包含查找結果的數組,每個元素包含line(行數)和text(匹配的文本)
 */
function jssearch(text, keyword, { caseSensitive = false, maxResults = Infinity } = {}) {
  const lines = text.split('\n');
  const results = [];

  lines.forEach((line, i) => {
    if (!caseSensitive) {
      line = line.toLowerCase();
      keyword = keyword.toLowerCase();
    }

    if (line.includes(keyword)) {
      results.push({ line: i + 1, text: line });

      if (results.length >= maxResults) {
        return results;
      }
    }
  });

  return results;
}

使用示例:

const text = 'JavaScript is a programming language. It is used to create interactive effects in web browsers, allowing for dynamic web pages and user interfaces.';

const results = jssearch(text, 'WEB', { caseSensitive: false, maxResults: 1 });
console.log(results);
// 輸出:[{ line: 1, text: 'JavaScript is a programming language. It is used to create interactive effects in web browsers, allowing for dynamic web pages and user interfaces.' }]

可以看到,我們可以通過選項參數來定製搜索的行為。

五、JSSEARCH的應用場景

JSSEARCH可以應用於很多場景,例如:

  • 網站搜索功能
  • 文件搜索功能
  • 日誌分析工具
  • 代碼編輯器中的搜索功能

總之,JSSEARCH是一個功能強大、易於使用、擴展性好、性能卓越的JavaScript搜索引擎庫,非常適合處理大型文本文件和實現搜索功能。如果你需要實現全文搜索功能,不妨試試JSSEARCH。

原創文章,作者:ORAU,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/142770.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
ORAU的頭像ORAU
上一篇 2024-10-14 18:42
下一篇 2024-10-14 18:42

相關推薦

  • Python簡單數學計算

    本文將從多個方面介紹Python的簡單數學計算,包括基礎運算符、函數、庫以及實際應用場景。 一、基礎運算符 Python提供了基礎的算術運算符,包括加(+)、減(-)、乘(*)、除…

    編程 2025-04-29
  • Python滿天星代碼:讓編程變得更加簡單

    本文將從多個方面詳細闡述Python滿天星代碼,為大家介紹它的優點以及如何在編程中使用。無論是剛剛接觸編程還是資深程序員,都能從中獲得一定的收穫。 一、簡介 Python滿天星代碼…

    編程 2025-04-29
  • Python海龜代碼簡單畫圖

    本文將介紹如何使用Python的海龜庫進行簡單畫圖,並提供相關示例代碼。 一、基礎用法 使用Python的海龜庫,我們可以控制一個小海龜在窗口中移動,並利用它的「畫筆」在窗口中繪製…

    編程 2025-04-29
  • Python櫻花樹代碼簡單

    本文將對Python櫻花樹代碼進行詳細的闡述和講解,幫助讀者更好地理解該代碼的實現方法。 一、簡介 櫻花樹是一種圖形效果,它的實現方法比較簡單。Python中可以通過turtle這…

    編程 2025-04-28
  • Python調用搜索引擎

    本文主要介紹如何使用Python編程語言調用搜索引擎,實現自動檢索和提取數據等功能。 一、搜索引擎簡介 搜索引擎是指一種網站或程序,可以通過輸入關鍵詞,搜索並顯示相關網頁、圖片、視…

    編程 2025-04-28
  • Python大神作品:讓編程變得更加簡單

    Python作為一種高級的解釋性編程語言,一直被廣泛地運用於各個領域,從Web開發、遊戲開發到人工智慧,Python都扮演著重要的角色。Python的代碼簡潔明了,易於閱讀和維護,…

    編程 2025-04-28
  • 用Python實現簡單爬蟲程序

    在當今時代,互聯網上的信息量是爆炸式增長的,其中很多信息可以被利用。對於數據分析、數據挖掘或者其他一些需要大量數據的任務,我們可以使用爬蟲技術從各個網站獲取需要的信息。而Pytho…

    編程 2025-04-28
  • 如何製作一個簡單的換裝遊戲

    本文將從以下幾個方面,為大家介紹如何製作一個簡單的換裝遊戲: 1. 遊戲需求和界面設計 2. 使用HTML、CSS和JavaScript開發遊戲 3. 實現遊戲的基本功能:拖拽交互…

    編程 2025-04-27
  • Guava Limiter——限流器的簡單易用

    本文將從多個維度對Guava Limiter進行詳細闡述,介紹其定義、使用方法、工作原理和案例應用等方面,並給出完整的代碼示例,希望能夠幫助讀者更好地了解和使用該庫。 一、定義 G…

    編程 2025-04-27
  • ITQFS——基於人工智慧的快速文件搜索引擎

    ITQFS是一種基於人工智慧技術的快速文件搜索引擎,它可以自動整理、分類、檢索和分享您的文件,讓您在文件管理上提高效率。 一、ITQFS的特性 1、ITQFS可以為用戶提供高效、快…

    編程 2025-04-27

發表回復

登錄後才能評論