最近一直在做搜索引擎的总结,不妨拿来Google的例子讲讲,正好为以后总结QueryParser做个热身。
最近网上也逐渐流行起来,“揭秘”——Google输入框下隐藏的秘密。我是不知道Google底层是怎么实现的,但在我看来它对关键字的处理恰似Lucene的QueryParser。这样一来,Google便正确理解了用户的意图,构建了正确的对象,返回了用户可能需要的链接。
而Google对关键字的预处理(关键字转换)不外乎这几类:
1. 可以用正则表达式(或者说是通配符)
如:http://[a-z]{1,3}//.abc//.com/.* 这表示查询所有域名末尾是abc.com的网址
(正则表达式看起来很困难,但是用起来却是非常快捷的,以后的文章中会有总结)
Wor?表示关键词有四个字母,前三个是Wor的
2. AND,OR,NOT
如:黄 AND 川,表示既包含“黄”又包含“川”的。
Java OR Lucene,表示包含“Java”、“Lucene”之一的。
Compass NOT SSH,表示包含“Compass”但是不包含“SSH”的。
3. 恢复停滞词
像I, and, then ,if这类的词在搜索引擎中被称为停滞词,因为在句子中起不到太大的意义,有时候就会被忽略。那么只要填上“+”加号就可以将停滞词连接起来,从而被搜索到了。
4. 搜索参数
如:“intitle:” 仅仅只会搜索网页标题。eg:intitle:Lucene
“index of” 是寻找网络和FTP目录
“inurl:”只会搜索网页的网址
“inanchor:”只会寻找那些作为超链接的文本
“link:”会告知有多少链接指向一个网站
“related:”来找到Google认为相似的内容
“info:site_name”可以返回关于某特定页面的信息
等等……
关于Google的“秘密”,网上已经有不少了,所以本人在此就不再累赘复述,只是为明天的QueryParser总结热热身