文章为系列文章,相关内容请看:
全文搜索是指针对文件内容进行搜索。其实只有明码文档类的文件才具备全文搜索的条件。比如一个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小时内与您取得联系。