全文搜索算法的思路

一、作用

全文搜索算法適合文本文件的搜索。


二、應用場景

全文搜索算法廣泛應用在各個網站的搜索功能中。


三、全文搜索和正則模糊查詢的區別

1、全文搜索可以把搜索關鍵字進行分割,提取出相關的關鍵詞。

2、正則模糊查詢只能把關鍵字作為整體,不能分割詞匯。


四、全文搜索的思路

(一)把被查詢的文本文件建立索引庫

1、在磁盤中確定一個文件作為索引文件。
索引文件的格式自定義,方便進行查詢。

2、索引文件的作用:
建立關鍵字和文件路徑、出現位置的對應關系。

假設詞匯“漂亮” 出現在文本文件 《我的對象》中,那么這個詞匯在索引中的記錄內容是:

漂亮 : 《我的對象》文件存放路徑 : 出現的起始字節位置

3、如何確定索引文件的內容?
3.1、按照順序讀取文本文件的字符,按照分詞規則忽略無用詞匯,提取關鍵詞匯。

3.2、給每個關鍵詞匯存入一個索引到索引文件里。


(二)開發網絡接口給外部查詢

1、提供HTTP接口給外部查詢

2、查詢思路:
用戶輸入查詢關鍵字,提交給后臺。

后臺獲取關鍵字,開始分詞。

把詞匯到索引文件中查詢。

如果詞匯出現在索引文件中,返回文件的路徑和坐標。

后臺把該文件內容返回(把目標詞匯高亮顯示)。


五、關鍵思路

(一)如何分詞

1、建立忽略詞匯表
把那些代詞、介詞、標點符號組成一個忽略表,用來忽略不計。
例如 我、我們、的、地、你、了
忽略標點符號: 、;,!?。

2、建立關鍵詞匯表
需要用戶不斷的錄入詞匯,方便查詢。
把漢語的詞匯都錄進去,例如:目錄、模型、關鍵、物質、組織、基礎、訓練、右擊、考試、老師等。

3、把文字序列進行分詞
從最左邊開始,判斷每一個字符:
如果在忽略詞匯表中,就忽略該詞匯,讀取下一個字符。

如果在關鍵詞匯表的詞匯中,有詞匯的第一個詞和該詞匯相等,那么讀取下一個字符是否匹配第二個字符。

例如當前字符是‘禮’,在關鍵詞匯表中有 ‘禮儀’這個詞匯的第一個詞匯和它相等,那么讀取第二個字符是否等于‘儀’。

注意:可能只有匹配一個字符也滿足。

4、如果查詢序列和關鍵詞匯表有相等的,就獲取索引文件中出現過的文件。


(二)索引文件如何建立

采用二進制格式,每條記錄連續存放。

單條記錄格式:20字節關鍵字    50字節相關文件路徑  4字節出現的起始索引位置

六、通俗介紹

(一)被搜索的文本文件通過分詞操作,建立索引。

(二)用戶提交關鍵句進行查詢,后臺根據關鍵句子也進行分詞操作,從索引文件中找到關鍵字相等的那些文件路徑,把文件內容返回給用戶。

案例:
1、搜索時有一句話: 我的未來不是夢。

2、分詞后忽略: 我 的 。

3、分詞后獲得的關鍵字:未來 不是 是夢 夢

4、把未來、不是、是夢、夢這四個關鍵字去索引文件里查詢,如果存在就返回對應的文件路徑。

5、假設找到以下文件路徑(這些文件內容中出現過關鍵字):
/doc/關于未來的演講.html
/doc/我的未來生活.txt
/doc/我做了一個夢.doc

6、把這些文件路徑代表的文件讀取,用內容列表返回給用戶。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/20877.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/20877.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/20877.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Gigapixel AI 安裝和使用教程

簡介 Topaz Gigapixel AI 是一款功能強大的圖像放大軟件,它可以幫助用戶將低分辨率的圖像放大到更高的分辨率,而不會損失細節。該軟件利用人工智能技術,能夠智能分析圖像并重建丟失的細節,從而生成高質量的放大圖像。 安裝 下載…

系統架構設計師 - 操作系統(1)

操作系統 操作系統(5-6分)操作系統概述進程管理進程和線程的基本概念進程的狀態 ★前趨圖 ★★★★信號量與 PV 操作 ★★★★死鎖及銀行家算法 ★ 大家好呀!我是小笙,本章我主要分享系統架構設計師 - 操作系統(1)知識&#xff0c…

CSS簡述(1)

CSS概述 CSS(層疊樣式表,Cascading Style Sheets)是一種樣式表語言,用于對HTML文檔控制外觀,定義布局。例如、css涉及字體、顏色、邊距、高度、背景圖像、高級定位等方面 CSS的主要用途: 1. 分離內容和樣…

2024.6.1 學習記錄

1、面經復習 2、項目使用guthub action 完成CI/CD,使用rollup打包為es格式 3、代碼隨想錄刷題復習

Go語言-切片底層探索 —— 補充篇:切片和底層數組到底是什么關系?

之前的切片探索中,上篇通過一道算法題目,了解到切片的兩大特性:一是:切片是引用類型,指向底層數組,修改其底層數組的時候,會影響切片中的值。二是:向切片中添加元素的時候&#xff0…

半導體光子電學期末筆記1: 電磁光學基本理論

Chapter 2: 電磁光學基本理論 電磁光學理論概述 真空中麥克斯韋方程組[p9] 在自由空間中,麥克斯韋方程組可以寫成如下形式: { ? H ? 0 ? E ? t (1) ? E ? μ 0 ? H ? t (2) ? ? E 0 (3) ? ? H 0 (4) \begin{cases} \nabla \times \…

Java——異常詳解

異常五個主要關鍵字:throw、try、catch、finally、throws 1. 異常的概念與體系結構 1.1 異常的概念 在Java中,程序執行過程中發生的不正常行為被稱為異常,如: 1. 算數異常 public static void main(String[] args) {System.ou…

基于MingGW64 GCC編譯Windows平臺上的 libuvc

安裝cmake 打開cmake官網 https://cmake.org/download/,下載安裝包: 安裝時選擇將cmake加到系統環境變量里。安裝完成后在新的CMD命令窗口執行cmake --version可看到輸出: D:\>cmake --version cmake version 3.29.3 CMake suite mainta…

牛客網刷題 | BC108 反斜線形圖案

目前主要分為三個專欄,后續還會添加: 專欄如下: C語言刷題解析 C語言系列文章 我的成長經歷 感謝閱讀! 初來乍到,如有錯誤請指出,感謝! 描述 KiKi學習了循環&am…

社交媒體數據恢復:Voxer

一、Voxer數據恢復教程 了解Voxer應用 Voxer是一款專門為iPhone和Android智能手機設計的免費對講機應用,為用戶提供即時的語音、文本、照片等信息發送和接收服務。該應用有點類似短信服務,但用聲音代替文本。當你下載之后,如果不邀請朋友&a…

Github查詢語法

轉載自link 基礎查詢結構 一個關鍵詞會匹配文件內容或文件路徑。 多個關鍵詞會匹配文件內容,只要包含關鍵詞,就會出現在搜索結果中,不論前后順序,是否是一個單詞(多個關鍵詞之間沒有空格)。 還可以使用…

Java中的JVM是什么?簡要說明其工作原理

Java虛擬機(JVM)概述 Java虛擬機(Java Virtual Machine,JVM)是Java技術的核心部分。它是一個抽象的計算機,可以解釋和執行Java字節碼。JVM提供了一個運行Java程序的環境,使得Java程序可以在各種…

【面試】字節碼文件是跨平臺的嗎?

目錄 1. 說明 1. 說明 1.字節碼文件(.class文件)是跨平臺的。2.字節碼文件是Java源代碼經過Java編譯器(javac)編譯后生成的中間代碼文件,這些包含了Java虛擬機(JVM)指令,而不是特定…

重復文件怎么查找并清理?電腦重復文件清理工具分享:4個

在日常使用電腦的過程中,我們不可避免地會遇到各種重復文件的問題。這些重復文件不僅占據了寶貴的存儲空間,還可能導致系統性能下降,甚至引發一些不必要的問題。因此,如何有效地查找并清理這些重復文件成為了許多用戶關注的焦點。…

計算 x 的二進制表示中 1 的個數

計算 x 的二進制表示中 1 的個數 代碼如下: int func(int x){int countx 0;while (x>0){countx;x x & (x - 1);}return countx;} 完整代碼: using System; using System.Collections.Generic; using System.ComponentModel; using System.Dat…

STM32基于HAL庫的HC-SR04模塊超聲波測距

文章目錄 一、HC-SR04模塊介紹二、創建工程1.選擇芯片2.配置RCC、SY![在這里插入圖片描述](https://img-blog.csdnimg.cn/direct/9d2a5b883f0e409eabb804e6da861277.png)3.配置串口14.配置定時器5.配置GPIO 三、Keil代碼1.勾選Use MicroLIB2.創建SR04.c和SR04.h文件3.其他代碼 …

html three.js 引入.stl模型示例

1.新建一個模塊用于放置模型 <div id"chart_map" style"width:800px;height:500px"></div> 2. 引入代碼根據需求更改 <!-- 在head或body標簽內加入以下鏈接 --> <script src"https://cdn.jsdelivr.net/npm/three0.137/build/t…

算法題-字符串排序

題目描述 給定n個字符串&#xff0c;請對n個字符串按照字典序排列。 輸入描述: 輸入第一行為一個正整數n(1≤n≤1000),下面n行為n個字符串(字符串長度≤100),字符串中只含有大小寫字母。 輸出描述: 數據輸出n行&#xff0c;輸出結果為按照字典序排列的字符串。 輸入 #輸…

2.7HDR與LDR

一、基本概念 1.基本概念 動態范圍&#xff08;Dynamic Range&#xff09; 最高亮度 / 最低亮度 HDR High Dynamic RangeLDR Low Dynamic Range HDR與LDR和Tonemapping的對應關系&#xff1a; 我們常用的各種顯示器屏幕&#xff0c;由于不同的廠家不同的工藝導致它們的…

HALCON-從入門到入門-軟件界面介紹

1.廢話 從halcon12到halcon23&#xff0c;開發的IDE界面大差不差&#xff0c;簡單說下界面上不同功能按鍵的分布&#xff0c;以及一些快捷鍵啥的&#xff0c;要是還有我沒有總結到的&#xff0c;又比較好用的&#xff0c;歡迎大家補充一下。 1.菜單欄 從上看到下&#xff0c;…