Swish-e 是一个快速,灵活和自由开放源码的网页索引系统。Swish-e是适合收藏的100万或更小的网页文件。使用Gnome ™ libxml2分析器和收集过滤器,Swish-e 能索引的纯文本文件,电子邮件, PDF格式, HTML格式, XML和微软®Word/的PowerPoint / Excel和任何文件,可以转换为XML或HTML文档。Swish-e也往往用做为数据库的功能补充,如MySQL的®数据库的非常快的全文检索。
SWISH-E搜索引擎用法 SWISH-E搜索引擎,不同于Lucene等搜索引擎,SWISH-E是可以独立执行的工具,通过设定配置文件和执行命令,不需要编写其他程序,即可完成文档的索引和检索。但是在SWISH-E 2.X版本中,不支持UNICODE字符集,在3.0版本中开始支持,如果只是英文,太局限了J。 SWISH-E使用的核心是配置文件的设定,通过设定配置文件,可以完成相应的工作。 1.配
2.5.4 coalesce_word_locations函数分析 coalesce_word_locations函数对于LOCATION的信息进行了合并,将同一个metaID的信息都放在 了一个LOCATION中,不同的filenum,只是存放了差值。在index.c L 2847开始,循环遍历每个 LOCATION,进行词条信息的合并。 /* Run on all locations */
在前面的部分中,对于swish-e读取文件内容,将分析所得的词条加入到hash表中的过程。 当所有的词条处理完成以后,此时在sw->hashentries[VERYBIGHASHSIZE]表中则存放了所有的词条。 此时需要对于这些词条进行一定的压缩处理,才能最后写入到索引文件中。 本节开始,对于词条信息的压缩过程进行阐述。 在index.c L1200开始进行Compress the entrie
一直想将swish-e的代码分析进行整理,趁着国庆,发布其中的内容,尽快地整理好。用的是swish-e 2.4.7版本。 先对于SWISH-E搜索引擎中的主要数据结构进行介绍。 1. 索引相关的主要数据结构 1.1 SWISH-E定义了SWISH结构对于索引,搜索过程进行处理,其中有MOD_Index结构 struct MOD_Index { /* entry vars *
通过代码debug和文档整理,最近打算将swish-e索引引擎结构分析文档和笔记逐渐贴出来。 基于的是2.4.7版本(与2.4.5版本差别不大)。但是在2.6版本中,直接采用了berkely DB存储方式,并实现了真正意义上的增量索引。 这个部分作为下一阶段的任务去研读一下。
在前面的内容中,通过对于词条的分析,排序、压缩等处理后,词条ENTRY目前是按照每个metaID一个LOCATION的结构进行存放。从本节开始,逐渐阐述索引文件的写入过程。 2.6索引文件写入过程 索引文件的写入主要是分为写入头部header过程和词条信息过程两部分。 2.6.1 write_header头部写入过程 先通过DB_InitWriteHeader_Native将header内容开始
前面部分对于词条进行了压缩等,从这部分开始分析索引文件的写入。 2.5 索引文件写入 2.5.1 write_index_file函数分析 基本流程为: 通过 coalesce_all_word_locations函数将词条按照metaID和filenum进行排序; 通过sort_words对于词条进行排序; write_header写入索引文件头部; write_index写入词条信息到索引文件
基本原理是将LONG型分为byte组(需要注意字节顺序,即:big endian和 little endian),然后通过fwrite将数组按照顺序写入到文件中。读取LONG型时,fread每个字节,并对字节进行移位操作,组成LONG型。这里应该称为数据处理,应该不算做压缩处理。 基本代码(来自swish-e 2.4.5)为: unsigned long PACKLONG(unsigne
Swish-e通过配置文件,进行索引过程的配置。swish.c中main函数开始,首先通过swish_new()初始化SWISH变量; 1.基本流程: 1.1 SWISH初始化 通过 SwishNew() 分配一个 Swish 指针变量,然后调用 initModule_DB 来初始化在索引过程中用到的文件读写函数,此时将索引文件的操作看做是 DB 操作; 然后通过 initModule_Index
从本节开始,对于核心索引过程进行描述。 2.3 核心索引过程 对于每个需要索引的文件,先初始化一个FileProp结构,然后读取文件内容,解析词条等等。 2.3.1 FileProp函数 每个 file 都通过 file_properties 函数生成 FileProp 结构,保存了文件的路径、大小、文档类型等。 备注: 如果在配置文件中没有初始化文档的类型,则默认为 HTML 类型。我们在配置文
在前一节中通过getentry函数的处理,在hash表中查找是否含有该词条,如果没有,则初始化一个词条entry变量。然后通过addentry进行处理。 2.3.4 addentry函数分析 加入词条到hash表的过程主要分为两部分:已有词条、新词条。 如果是 hash 表中未出现的词条。 在这个过程中写入了频率和位置信息(位置信息含有 strcuture 结构信息,便于在以后的压缩过程中处理);
上一节中对于索引之前的初始化工作进行了分析,从这节开始,对于索引过程进行阐述。 2.2.3 indexPath索引文件过程 /* This should be printed by the module that's reading the source */ tmpswline = sw->dirlist; while (tmpswline != NULL) {
在swish-e、lucene等搜索引擎中,索引文件有的采用binary格式,对于整数、long等数据类型通常采用压缩算法,再写入到索引文件中。对于其中几种数据类型压缩进行了分析。 整数压缩算法: 在整数前面增加0,形成N*7位的二进制格式; 将整数分割为7位组; 在第一组前增加1,如果还有其余的分组,在其余分组前面都加1,(最后一组除外)。 比如: Int 135 二进制为10
自从搭上 Dreamhost 的贼船之后,我就在幻想 Dreamhost 什么时候能够支持 Nutch 就好了,这样就可以搭建一个个人的搜索引擎。令人沮丧的是 Dreamhost 似乎一直没有支持 Nutch 的打算(当然,Nutch 这个东西一旦能够被支持,一个普通的用户恐怕要吃掉所有的资源)。 今天从 Vingel 的 Blog 上看到他使用的 Swish-e, 是一个不错的选择。 安装 Sw
Eclipse搜索引擎网页应用接口(web-eclipse-textsearch) 用点击WEB超链接搜索,来替代通常地靠按Ctrl+H键来手动查找的插件技术。 程序员在查找曾经开发过的类似模块的一些技术(程序员经常这样做)时,将变得更为直接,因为所有曾经查询过的关键字都以超链接地形式存储在网页中。 Test.html点击的超链接代码 html超链接代码:向插件内置服务 2014 socket端口
在“指数”下面有一条波浪线。IDEA告诉我,它无法解析MVC视图“索引”。我已经把索引页和错误页放在templates目录下,当我运行它时,它仍然会显示一个白色的错误页。令人惊讶的是,当我使用@RestController而不是@Controller时,它可以工作(打开索引页),但当我想打开404页和500页时,它仍然会显示白色标签错误页。
问题内容: 我有一个表,与3列:,,和。我有关于列和的索引。 我尝试了这个插入选项: 可以的。比我尝试过的一个(请参阅 Ané - e急性 ): 并且我收到此错误消息: MySQL不知何故在“ Ane”和“Ané”之间没有任何区别。我如何解决这个问题以及为什么会这样? 表学生的字符集为“ utf8”,排序规则为“ utf8_general_ci”。 以后的edit1:@Crozin: 我已更改为使
_ | A | B | C | D | E | F | G | H | I | J | L | M | N | O | P | R | S | T | U | V | W | X _ __nonzero__() (scrapy.selector.Selector 方法) (scrapy.selector.SelectorList 方法) A adapt_response() (scrapy.con
A AC97,AC97接口 ATAPI(AT Attachment Packet Interface, (IBM PC)AT附属包接口),USB驱动程序的协议信息 atomic instructions(原子操作指令),原子操作指令和内存栅 atomic operations(原子操作),内核中的锁 atomically protected variables(原子保护变量),原子保护变量 B B
符号 -CURRENT,追踪开发分支 -STABLE,追踪开发分支 .k5login,用户配置文件: .k5login 和 .k5users .k5users,用户配置文件: .k5login 和 .k5users .rhosts,Dump 和 Restore /boot/kernel.old,建立并安装一个定制的内核 /etc,分区规划 /etc/gettytab,/etc/gettytab /