逻辑非,用NOT连接检索词A和检索词B,检索式为:
ANOTB(或A—B)
表示检索含有检索词A而不含检索词B的信息,即将包含检索词B的信息集合排除掉。布尔逻辑运算的功能如表4.24所示。
布尔逻辑运算一览表
名称符号表达式功能
逻辑与*或ANDA*B同时含有提问词A和B的文献,为命中文献逻辑或+或ORA+B凡是含有提问词A或B的文献,为命中文献逻辑非-或NOTA-B凡是含有提问词A但不含有B的文献,为命中文献4.3.2后缀树和后缀数组
后缀树和后缀数组是一种较新的建立全文索引的方法。它由某个文本的所有半无限串(起点在文本任意位置,终点在文本尾的字符串)字典排序而得,具有较髙的检索效率并且更适合如范围查找、模糊査找等较复杂的査找方式。当前,在基因组分析、文本压缩、字符检索等应用领域,后缀数组都表现出了极大的潜力。
后缀树概念
后缀树是一种数据结构,它支持有效的字符串匹配和查询。一个具有ZZ2个词的字符串S的后缀树T,就是一个包含一个根节点的有向树,该树恰好带有个叶子,这些叶子被赋予从m的标号。每一个内部节点,除了根节点以外,都至少有两个子节点,而且每条边都用S的一个非空子串来标识。出自同一节点的任意两条边的标识不会以相同的词开始。
后缀树的关键特征是:对于任何叶子/,从根节点到读叶子所经历的边的所有标识串联起来后恰好拼出S的从/位置开始的后缀,即S[z…,zn]。树中节点的标识被定义为从根到该节点的所有边的标识的串联。
后缀树原理
一棵后缀树包含了一个或者多个字符串的所有后缀。空字符串也算其中一个后缀。对于字符串banana,其所有后缀为:bananaananananaananaa空。通常为了更清楚地表示出后缀,在字符串末尾添加一个特殊字符作为结束标记,在这里使用$。因此banana的所有后缀就可以表示为:banana$anana$nana$ana$na$a$$banana所对应的后缀树如图4-7所示。
图4-7banana的后缀树
Trie是一种搜索树,可用于存储并查找字符串。Trie的每一条边都对应一个字符。在Trie中查找字符串S时,只须依次枚举S的每个字符,同时从Trie的根节点开始选择相应的边往下走。如果枚举完的同时到达Trie的叶子节点,说明S存在于Trie中。如果未到达叶子节点或者枚举中途发现没有任何对应的边,说明S没有被包含在Trie中。图4-8是一个典型的Trie。
可以对Trie进行压缩,对只有一个树铸的节点进行合并,如图4-9所示。后缀树就是一个压缩后的Trie,存储了字符串所有的后缀。
査找一个字符串S是否包含了字串T。如果S包含T,那么T必定是S的某个后缀的前缀。因为S的后缀树包含了所有的后缀,因此只须对S的后’缀树使用和Trie相同的查找方法即可。例如:在banana中査找an。
统计S中出现T的次数。每出现一次T,必定对应着一个不同的后缀,而这所有的后缀又都有着共同的前缀T。因此这些后缀在S的后缀树中必定属于某一棵子树。这棵子树的叶子数便等于T茬S中出现的次数。例如:统计banana中出现an的次数,如图4-10所示。
找出S中最长的重复子串。所谓重复子串是指出现了两次以上的子串。首先定义节点的”字符深度“=从后缀树根节点到每个节点所经过的字符串总长。找出有最大字符深度的非叶节点,则从根节点到该非叶节点所经过的字符串即为所求。例如:banana的最长重复子串为ana,如图4-11所示。
后缀树存储*
为了节省不必要的空间浪费,不在边上存储字符串,而是存储该字符串在原串中的起止位置。空间复杂度为O,如图4-12所示。

banana$

图4-12存储字符串的起止位置
后缀樹的构造

最简单的构造方法是:使用类似于Trie的构造方法。此时算法复杂度为O(〃2)。后缀树可以用0(〃)的算法构造出来,但是它们都十分复杂。这里介绍其中一种比较常见的方法。

基本思路是:先往树中插入最长的后缀,即字符串本身。然后插人次长的后缀,再然后插人第三长的后缀,如此反复一直到空后缀被插入为止。这个过程也可以这样描述:
①插入S本身;
②若上一个插人的后缀为S,令S=aw(这里a表示S的第一个字符,w表示S去掉a以后所得到的后缀),往树中插人w,重复本操作直到S=$。
每次插人一个后缀,会产生一个新的叶节点,同时可能产生一个新的非叶节点。如图4-13所示,可能出现的>^、4两种情况,但不可能出现->这种情况。
图4-13插人后缀
定义后缀连接=从节点A指向节点B的指针,B所表示的子串是A所表示的子串的最长后缀,即根节点到A所经过的字符串为S=aw,到B所经过的字符串为w,如图4-14所示。

该算法的关键在于在插入后缀的过程中,利用非叶节点的后缀连接实现快速插人,同时维护新插入的非叶节点的后缀连接。在插人的过程中,需要用到后缀树的子串快速定位。如果已知某个子串存在于后缀树中,那么可以対它进行快速定位。其思想是只匹配当前可选择的边的第一个字符。
算法所用符号描述如下:

需要构造后缀树的字符串

从第/个字符开始的后缀
N(S,)=S,在后缀树中对应的叶节点

P(S,)=N(S,)的父节点
G(S,)=P(S,)的父节点,即N(SJ的祖父?SL=p的后缀连接所指向的节点
到g所经过的字符串
001=后缀树的根节点算法流程如下。

=r0ot,首先插人S,此时后缀树中仅有两个节点。
设已经插人了S,现要插入S,+l。分情况讨论。
①P(S,)在插人S,之前已经存在。则P(SJ有后缀连接。令u=SL(P(S,))。从u开始沿着树往下查找,在合适的地方插入新的节点。

②P(S,)是在插人S,的过程中产生的。此时G(S,)必定存在并有后缀连接。令u=SL(G(S,)),w=W(G(S,),P(S,))。从u开始,对w进行快速定位找到节点v(注意,v可能需要通过分割边来得到)。令SL(P(S:〉〉指向v。从v开始沿着树往下査找,在合适的地方插人新的节点。
不断重复以上过程,即可完成整棵后缀树的构造,如图4-15所示。
后缀数组
字符串”science“的7个后缀字符串分别是:
Suffix=science
Suffix=cience
Suffix=ience
Suffix=ence
Suffix=nee

Suffix=ce
Suffix=e

后缀字符串按字典顺序排序后的结果是:Suffix=ceSuffix=cienceSuffix=eSuffix=enceSuffix=土enceSuffix=neeSuffix=science后缀数组依次存故排序好的后缀字符串的开头位置。对于字符串”science“的后缀数组的数据结构如表4.25所示。
字符串”science“的排序
Index1234567
Value6274351
名次数组Rank,RankD]存放Suffix在排序中的名次。例如,”science“的名次数组如表4.26所示。
字符串”science“在排序中的名次
Rank1234567
Value7254613
为了获得后缀数组,比较简单的方法是将所有后缀子串看作独立的字符串排序,但这样复杂度太高,不能令人满意。
下面来対后缀数组的概念进行定义。
定义1对于字符串S,定义S的长度为Len,第£个字符为S[/],第/个字符至第j个字符组成的子串为S[/…)]。构成字符串的字符集2。
定义2Suffix⑴的G—前缀)=S[P”f+々——l],即Suffix(/)的前々个字符组成的字符串,如果Len(Suffix,则其—前缀)=Su££ix。
定义3按所有后缀字符串的前缀)排序的后缀数组为Inde?,相应的名次数组为Rank*o6.后缀数组生成算法
计算Index,和Rank,数组的算法分为两部分。
对所有后缀排序,生成后缀数组Index,。这里可以采用快速排序,时间复杂度O,或者采用桶排序,时间复杂度0(|2|)。
的名次数组Rank,。允许并列的名次,即对于后缀数组中的第z个后缀0>2),如果与第i——l个后缀字符串相等,则名次与第个后缀相同,否则名次等于“时间复杂度0(/0。
基于Index*和Rank*的(2々一前缀)Suffix与Suffix大小如下。
与”相等“等价
Rank*[Index*Lr]]二Rank*[Index^[jy]]且Rank*[Index^[jc+走]]=Rank*[Index^[;y+是]]
与”小“等价
Rank*[Index*[J:]]=Rankfe[Index*[jy]]且Rank*[Index*[工+是]]
算法的总框架如下:
k=1
repeat
前缀排序计算名次k=k*2
untilk〉=短语长度
加权检索
与布尔检索一样,加权检索也是一种基本检索手段,所不同的是,加权检索不重在判定检索词或字符串是否在数据库中存在,与别的检索词或字符串是什么关系,而在于判定检索词或字符串在满足检索逻辑后对该记录命中与否的影响程度。加权检索把量化思想引人定性检索之中,是改善和提高检索效果的一种重要手段。加权检索分标引加权和检索加权;标引加权是对信息的每个概念(标引词)给定大小不等的数值(权值),以区分信息各主题的重要程度;检索加权是指检索者在给出检索词的同时,并为每个检索词赋予权值,以区分每个检索词在检索中的重要程度。两种方法最终都是用数量来判断检索结果与用户检索需求的相关程度。
因此,可以这样来定义加权检索:根据用户的检索需求来确定检索词,并根据每个词在检索要求中的重要程度不同,分别给予一定的数值(权值)加以区别,同时利用给出的检索命中界限值(阈值)限定检索结果的输出。
检索词加权检索
检索词加权检索是最常见的加权检索方法。具体的实现方法为:在每个检索词后面给定一个数值,表示其重要性程度,这个数值称为权值。在检索时,先查找这些检索词在数据库记录中是否存在,然后计算存在的检索词的权值之和。只有当数据库记录的权值之和达到或超过预先给定的阈值时,该记录才算命中。加权检索只须接触检索词,不须编制提问逻辑式。通过加权,明确了各检索词的重要程度,使检索更有针对性,并且能依据权值的大小,对命中记录的重要性进行排序。
检索词加权检索的优点是:明确了各检索词(概念)在检索中的重要程度;可以方便地提高或降低阈值来扩大和缩小检索输出的范围;检索结果按符合检索要求的重要程度顺序排列,表达式简洁。其缺点是加权法提问式表达不如逻辑式直观,而且权值的确定较为困难,增加了检索者的负担。
词频加权检索
所谓词频加权检索是根据检索词在记录中出现的频次来计算命中记录的权和,依据命中记录权和数从大到小排列,最后由阈值控制输出命中结果。与检索词加权检索不同的是,宁波seo优化词的权值是由数据库记录中的词频决定,不是由检索者指定,不需人工干预,减轻了检索者的负担。
同一个检索词在不同的记录中,其权值可能不相同。词频加权检索方法应建立在对全文数据库和文摘数据库基础之上,否则词频加权将失去意义。
词频加权检索主要是根据检索词在命中记录中出现的频次来决定记录是否被命中,但由于词的使用频率不一样,对于低频检索词在检索过程中得到的权值可能比较小,短文章同样也可能因为词相对少而难以被检出。因此,词频加权检索通常有两种方式:简单词频加权检索和相对词频加权检索。
简单词频加权检索,指检索时累计检索词在记录中出现的次数来决定记录的权值,然后累计俵记录每个检索词权值之和来决定该记录是否为命中记录。
这种方法存在一个缺陷,就是不论文章长短、词频高低都采用的是统一的词频标准,例如,一个新词出现,往往可能由于本身词频很低,造成无法被检索出来。而相对词频加权则合理地解决了这一问题。
相对词频加权检索:是将每一个检索词在本文中频率和在整个数据库中的频率综合考虑,进行加权检索的方法。相对词频加权可采用两种统计方式:
文内频率=指定词在文本中的频次/该文献词汇总频次文外频率=指定词在文本中的频次/该词汇在整个数据库中总频次由此可以看出,文内频率解决了短文章中词频过低的问题,文外频率解决了新词、专用词的低频问题。但这两种方法均要求数据库预先对其中的每一篇文献的词汇总频次、每一个词汇在数据库中出现的次数作统计并记载,否则,在检索过程中很难获得这些数据。
标引加权检索
标引加权检索是指在对文献进行标引时,根据每个标引词在文献中的重要程度不同,为它们附上不同的权值,检索时通过对检索词的标引权值相加来筛选命中记录。
标引加权检索的具体实现原则和过程为:在进行标引加权时,对反映文献主要内容的标引词给予髙权值,反映文献次要内容的标引词给予较低的权值;检索时,只需给出检索词和检索阈值,对满足检索阈值的检索结果按其权值之和从大到小输出。很明显,标引加权检索较检索词加权检索更具有科学性,它可以避免以次要内容标引的信息被检索出。
在检索中,其捡索的阈值可以从两方面考虑:其一,为每个检索词制定一个阈值,文献中该标引词权重大于其阈值者才被作为命中,这样避免了次要内容被检出;其二,给总的检索结果指定一个阈值,要求被检索出的文献,其与检索词相关的标引词权之和大于阈值者才被作为命中文献,这样保证了命中文献的综合相关度。
由于标引加权使标引的难度增大,因而,不但要制定一个统一的加权标准和规则,而且还要求标引者对标引加权的规则较为熟悉,否则将会给检索带来混乱和较大差距。
在计算机自动标引的系统中,可以方便而有效地采用标引加权技术。例如,对全文数据库而言,可根据词在文献中的不同位置、出现频率来综合标引加权。用计算机进行标引加权实际上是把词频加权检索的词频统计过程前移至标引过程,再借助其他一些技术进行权重分配实现标引。
全文检索
全文检索是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户査询时,检索程序就根据事先建立的索引进行査找,并将査找的结果反馈给用户的检索方式。这个过程类似于通过字典中的检索字表査字的过程。全文检索的方法主要分为按字检索和按词检索两种。
按字检索是指对于文章中的每一个字都建立索引,检索时将词分解为字的组合。对于各种不同的语言而言,字有不同的含义,比如英文中字与词实际上是合一的,而中文中字与词有很大分别。
按词检索指对文章中的词,即语义单位建立索引,检索时按词检索,并且可以处理同义项等。英文等西方文字由于按照空白切分词,因此实现上与‘按字处理类似,添加同义处理也很容易。中文文字则需要切分字词,以达到按词索引的目的。
全文检索系统是按照全文检索理论建立起来的用于提供全文检索服务的软件系统。一般来说,全文检索需要具备建立索引和提供査询的基本功能,此外现代的全文检索系统还需要具有方便的用户接口、面向WWW的开发接口、二次应用开发接口等。
全文检索的技术指标
判定一个检索系统的优劣,主要从质量、费用和时间3方面来衡量。因此,对计算机网络信息检索的效果评价,也应该从这3个方面进行。质量标准主要通过査全率与査准率进行评价。费用标准即检索费用是指用户为检索课题所投人的费用。时间标准是指花费时间,包括检索准备时间、检索过程时间、获取文献时间等。查全率和査准率是判定检索效果的主要标准。另外,还应考查两个指标:索引的膨胀系数和检索速度。
査准率和査全率
查准率和查全率是目前衡量检索效果的相对合理的指标,具体如下。
查准率=(检索出的相关信息量/检索出的信息总量)X100%查全率=(检索出的相关信息量/系统中的相关信息总量)X100%査全率是衡量检索系统和检索者检出相关信息的能力。查准率是衡量检索系统和检索者拒绝非相关信息的能力。两者合起来,即表示检索效率。
例如,要利用某个检索系统查某课题。假设在该系统文献库中共有相关文献为40篇,而只检索出来30篇,那么査全率就等于75%。
例如检出的文献总篇数为50篇,经审查确定其中与项目相关的只有40篇,另外10篇与该课题无关。那么,这次检索的查准率就等于80%。
査准率的局限性主要表现在:如果检索结果是题录式而非全文式,由于题录的内容简单,用户很难判断检索到的信息是否与课题密切相关,必须找到该题录的全文,才能正确判断出该信息是否符合检索课题的需要;同时,査准率中所讲的相关信息也具有”假设“的局限性。
查全率的局限性主要表现在:它是检索出的相关信息量与存储在检索系统中的全部相关信息量之比,但系统中相关信息量究竟有多少一般是不确知的,只能估计;另外,查全率或多或少具有”假设“的局限性,这种”假设“是指检索出的相关信息对用户具有同等价值,但实际并非如此,对于用户来说,信息的相关程度在某种意义上比它的数量重要得多。
实验证明,在查全率和査准率之间存在着相反的相互依赖关系——如果提高输出的查全率,就会降低其査准率,反之亦然。
对用户来说,影响检索效果的主要因素有文献标引的广泛性和用户检索标识的专指性。
索引膨胀系数
针对全文检索来说,索引内容越多,膨胀越大,检索速度也越快,但实际往往并不是这样。针对检索算法来科学、巧妙地组织索引,可能拥有较小的索引和快速的检索。因此,研究索引的膨胀系数和索引的组织对全文检索系统的建设是十分有益的。
索引的膨胀系数是指针对全文所建的索引文件大小与全文文件大小之比,例如,没有为全文创建索引的全文检察系统,其膨胀累数为0;若索引文件与全文文件一样大,其膨胀系数等于1。
索引膨胀系数=索引文件的大小/全文数据库的大小索引文件的膨胀取决于索引的结构,为了满足全文捡索的各种匹配需要,全文索引需要以最小的标引单位作为索引关键字,英语一般为单词,中文则为单汉字。如较为完全的全文索引结构为单汉字、记录号、段落号、位置号。
这样的索引结构将会造成很大的索引膨胀系数,检索时,需匹配、比较的项目多,造成检索速度不理想。第一种改进可以舍去段落号字段,索引空间缩小1/4,位置号全文统一编排,检索运算也省去了一次比较;第二种改进固定字数循环编号,例如每到512个字以后重新从1开始编号,这样,索引缩小了,实践证明误检也极少,也可以在输出时再做必要判断即可。为了节省空间,在实用系统中通常把索引建成倒排档结构,在该索引结构上,只要对算法进行优化,其检索速度会得到提髙。索引倒排结构如图4-16所示。
单汉字(主键)记录数记录号1该记录位置集合记录号2该记录位置集合…图4-16索引倒排结构
有的全文检索系统的索引结构除构建单汉字为主动的索引之外,还增加了髙频词段的索引,达到了提高检索速度和减少匹配次数的目的。还有的用二进制位来构造索引,即用二进制位顺序位置来表示该字是否存在,存在者用1表示,否则为0。这样的索引若得到有效的组织,不但其索引空间大大压缩,采用二进制位的匹配运算,检索速度也将大大加快。
检索速度
检索速度取决于匹配算法,匹配算法又与索引的组织结构密切相关,一个优秀的全文检索算法,在百兆级的数据库中,检索速度应该能够在一两秒内反应,否则,不能算是一个好的全文检索算法。检索的匹配算法一般是根据索引结构而研制的。如没有索引的全文检索算法,只能是从头到尾顺序匹配,就像在Word文件中进行字串查找和替换一样,虽然它的膨胀系数为零,其在磁盘中的匹配速度是不能令人满意的。
对于具有记录号和位置的索引,其检索速度主要在于如何进行集合运算,尽可能减少比对次数,以提髙检索速度。如果在单字索引的基础上,又生成了髙频词段的索引,检索时,高频词就不用要再进行单汉字的匹配比较,而低频词的比较次数要少得多,从而检索速度将大大加快,但索引的膨胀系数也会增大。
对于二进制方法构造的索引,即记录号和位置号的数值与相应的二进制位对应,匹配运算完全采用二进制位的”与“运算,然后用一定的解析算法得到全部命中记录号集合。这种匹配算法速度最快,但受到数据库规模和数据复杂性的限制。
全文检索的实现
全文检索是以全文本信息为主要检索对象,允许用户以布尔逻辑等和自然语言,根据资料内容而不是外在特征来实现检索的先进的检索技术。全文检索的实现通常是用检索词对由全文产生的词(字)索引文档的匹配,在实际的全文检索系统中,全文检索往往不是简单地考查一个词是否在全文中出现,还要考查多个词在全文中的相对位置等。西文的全文检索多数采用位置检索技术,这样可以提高全文检索的查准率。目前,绝大多数中文全文检索系统并不注重词相互间的位置检索,只是简单地把布尔逻辑检索引人全文检索,随着人们对中文全文检索查准率的要求,位置检索将会逐步进人中文全文检索系统中。
位置检索
位置检索可要求检索词以用户所规定的相对位置出现。例如,使两个(或多个)检索词相连(可以此表示词组)或相邻,或同在一个字段或子字段中等,从而使检索出的文献更确切地符合用户要求,提高查准率。
不同的联机检索系统所使用的位置算符的种类和功能有时不完全相同。常用的位置算符有以下8种。
①W算符。表示两个检索词紧挨着,词序不能颠倒,中间不得插人其他词、字母或代码,但允许有空格或标点符号。
②nW算符。表示两个检索词中间可插人n个词,但它们之间的顺序不可颠倒。

③N算符。表示两个检索词必须相连,不得插人其他词,但词序可以颠倒。
④nN算符。表示两个检索词中间可以插人n个词,且词序可以颠倒。
⑤F算符。表示两个检索词必须同时出现在同一个字段内,但两词的词序和中间插人的词数不限。
⑥S算符。表示两个检索词必须出现在同一个子字段中,但两词的词序和插人的词数不限。
⑦C算符。表示两个检索词必须出现在同一记录中,但两词的词序和所在的字段不限。
⑧L算符。表示两个检索词之间存在从属关系或限制关系,如果其中一个为一级主题词,另一个就为二级主题词。
在两个检索词之间输人w或者with,就会检索出包含这两个词的所有记录,这两个词以所输人的顺序出现,它们之间不再有任何词。
在两个检索词之间输入n或者near,将检索出包含两个词的所有记录,这两个词的顺序是任意的,它们之间不再有其他任何词。
截词检索
截词检索,亦称部分一致检索或模糊检索,是一种计算机被检索主题词字符串与文献被标引词字符串部分匹配的智能型检索技术。文献检索以效率为中心,截词检索就是为提髙文献检索效率而发展的一种检索技术。就粪型而言,截词检索分为后截词检索(前方一致)、前截词检索(后方一致)、中截词检索(前后方一致),以及前后截词检索(中间一致)4种基本类型。字符串被截部分可以为空,从这一意义上讲,传统意义的字符串全匹配检索仅仅是截词检索中一个特例。或者,可称截词检索是一种广义的字符串匹配检索技术,而传统的机检技术则为一种狭义的字符串匹配检索技术。
在OCLCFirstSearch收录的ERIC数据库中,就使用了截词检索技木,它所提供的截词检索符有”
“*”可代表麥个字符,如果输入“instruction*”,包含“instruction,instructions或者instructional”等的记录就会敏撥索出来。
“#”代表单个的字符,如果输人“worn林n”,包食“woman或women”等的记录都会被检索出来。
一个“?”或者“n?”代表9个额外的字符。如果输入“colo?r”,包含“color,colour或colonizer”等的记录会被撥索出来。
限制检索
限制检索是通过限制检索范围,达到优化检索结果的方法。限制检索的方式有多种,例如进行字段检索、使用限制符、采用限制检索命令等。
①字段检索
本文转载自
宁波seo优化www.leseo.net
补充词条:宁波谷歌seo
宁波网络seo
宁波网络seo公司
宁波seo优化公司
宁波网站排名优化