整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

文件搜索神器Everything使用系列教程之-全文

文件搜索神器Everything使用系列教程之-全文搜索篇

文章为系列文章,相关内容请看:

  • 文件搜索神器Everything使用系列教程之——搜索篇
  • 文件搜索神器Everything使用系列教程之——文件互传篇




什么是全文搜索

全文搜索是指针对文件内容进行搜索。其实只有明码文档类的文件才具备全文搜索的条件。比如一个exe文件,它是一个二进制文件,是不可以进行全文搜索的。

明码文档类都有什么文件呢?

  • 比如我们常见的txt文件、rtf文件、doc、docx文件、excel、json、ppt等都是文档类文件。
  • 所有的代码文件,比如.cpp文件、.h文件、.c文件、.php文件等等都是文本类文件。

Everything全文搜索

在搜索篇中,我们主要学习了如何在Everything中进行文件名和文件夹名搜索。其中提到了全文搜索, 其实在Everything的早期版本中是不支持全文搜索的。从1.4版本开始支持 content关键字,即全文搜索。所以说Everything 是一款支持全文搜索的工具。

语法:content: 关键字

那么搜索的效果怎么样呢?是不是和文件名搜索一样给力,可以做到秒出呢?

小编实际测试发现,Everything的全文搜索其实并不理想,非常卡顿。原因是Everything 并没有自己建立文档的内容索引,而是利用操作系统提供的Windows Search 接口进行搜索的。而windows自带的搜索从xp时代就有了,但一直都很慢,所以也被大家所抛弃。

那么有没有一款和Everything搜索文件名一样优秀的,用于全文搜索的工具呢?这个问题才是本文的重点。

说到这里可能很多程序员朋友会说:“干嘛不用vs code呢?”。 英雄所见略同。vs code确实在全文搜索方面也很优秀,但vs code存在两个问题:

  • vs code 是一款代码编辑软件,并不适用于所有用户。比如作家、文案工作者。
  • vs code 只能搜索纯文本,无法搜索如excel、word、ppt等办公文档。

AnyTXT Searcher全文搜索

AnyTXT Searcher是一个强大的本地数据全文搜索引擎,和Everything一样优秀。其实Everything也曾经推荐用户使用AnyTXT Searcher做全文搜索。

这款软件也非常小巧,大小只有16MB,虽然比Everything大一点,但现如今16MB的程序已经算小的了,它支持非常丰富的全文搜索文档格式:

  • 纯文本格式(txt、cpp、html 等)
  • Microsoft Outlook (eml)
  • Word(doc、docx)
  • Excel(xls,xlsx)
  • PPT(ppt, pptx)
  • PDF
  • 支持实时搜索
  • 对SSD固态硬盘优化
  • AnyTXT Searcher使用方法

    用法超级简单,也没什么可说的,直接看图吧:


    指定盘符搜索


    指定文件后缀搜索

    总结

    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 函数式子

    精准匹配: “ ” 里面加上搜索词