文章為系列文章,相關內容請看:
全文搜索是指針對文件內容進行搜索。其實只有明碼文檔類的文件才具備全文搜索的條件。比如一個exe文件,它是一個二進制文件,是不可以進行全文搜索的。
明碼文檔類都有什么文件呢?
在搜索篇中,我們主要學習了如何在Everything中進行文件名和文件夾名搜索。其中提到了全文搜索, 其實在Everything的早期版本中是不支持全文搜索的。從1.4版本開始支持 content關鍵字,即全文搜索。所以說Everything 是一款支持全文搜索的工具。
語法:content: 關鍵字
那么搜索的效果怎么樣呢?是不是和文件名搜索一樣給力,可以做到秒出呢?
小編實際測試發現,Everything的全文搜索其實并不理想,非常卡頓。原因是Everything 并沒有自己建立文檔的內容索引,而是利用操作系統提供的Windows Search 接口進行搜索的。而windows自帶的搜索從xp時代就有了,但一直都很慢,所以也被大家所拋棄。
那么有沒有一款和Everything搜索文件名一樣優秀的,用于全文搜索的工具呢?這個問題才是本文的重點。
說到這里可能很多程序員朋友會說:“干嘛不用vs code呢?”。 英雄所見略同。vs code確實在全文搜索方面也很優秀,但vs code存在兩個問題:
AnyTXT Searcher是一個強大的本地數據全文搜索引擎,和Everything一樣優秀。其實Everything也曾經推薦用戶使用AnyTXT Searcher做全文搜索。
這款軟件也非常小巧,大小只有16MB,雖然比Everything大一點,但現如今16MB的程序已經算小的了,它支持非常豐富的全文搜索文檔格式:
用法超級簡單,也沒什么可說的,直接看圖吧:
指定盤符搜索
指定文件后綴搜索
AnyTXT Searcher絕對稱得上Everything的最佳搭檔。期待未來這兩個軟件能夠完美整合,把搜索這件事情做到極致。
如果您覺得本文對你有用,請記得點贊加關注哦,嘿嘿! 工具用得好,下班下得早(*^__^*)
字符串查找也叫字符串搜索或字符串匹配,就是從一段文本中查找一小段文本,返回完整匹配的位置。字符串查找的算法有很多種,如:Boyer-Moore算法、Rabin-Karp算法、KMP算法等。最好理解的是樸素搜索法,也就是窮舉比較,其算法復雜度接近于:O(N * M)。這里以樸素搜索為例來引入門。
步驟是:
1. 建立兩個循環,外循環是被查找的文本,內循環是查找字符串;
2. 將查找字符串逐個與被查找的文本對比,當遇到有不相等時,跳出內循環,文本指針向后移動一位,從下一個開始比較;
如果內循環遍歷完成后,還沒有不相等的情況,則表示匹配成功,返回當時文本內容的下標,否則返回-1。
function find(str, content) {
var i, conetentLen=content.length
var j, strLen=str.length
// 兩個循環,外層是被查找文本,內循環是查找字符串
for (i=0; i < conetentLen; i++) {
for (j=0; j < strLen; j++) {
// 當遇到不有不相等時,跳出從文本下一個字符開始比較
if (str[j] !==content[i + j]) {
break
}
}
// 如果查找字符串全部比較完成表示成功匹配
if (j===strLen) {
return i
}
}
// 如果文本全部比較完還是沒有查找到,則返回-1
return -1
}
find('ABC', 'ABABC') // 2
find('AAB', 'AAABC') // 1
find('ABC', 'AABAC') // -1
常見的搜索引擎中搜索時候加上下面的關鍵字:
例如搜索所有以登陸作為網頁開頭的頁面,就可以采用下面的方式:
intitle:登陸 進行搜索,這樣搜索到的所有html頁面的title字段中都是登陸
inurl:?php 同理,搜索到的所有頁面的url中都會包含?php
filetye:pdf python 這樣你搜到所有文件都是pdf格式 并且都是python相關的
site:163.com 郵箱 這樣你搜索到的都是關于163站點的關于郵箱的信息頁面
天氣相關的: weather 城市名
匯率: 貨幣1 in 貨幣2 表示貨幣1和貨幣2的匯率
行程/航程: 城市1 to 城市2
倒計時計數器: set timer 數字 seconds/minutes/hours
計算器: eg: 2018 + 2018^2
繪制函數圖像:graph 函數式子
精準匹配: “ ” 里面加上搜索詞
*請認真填寫需求信息,我們會在24小時內與您取得聯系。