CN101604328A - 一种互联网信息垂直搜索方法 - Google Patents
一种互联网信息垂直搜索方法 Download PDFInfo
- Publication number
- CN101604328A CN101604328A CNA2009101085148A CN200910108514A CN101604328A CN 101604328 A CN101604328 A CN 101604328A CN A2009101085148 A CNA2009101085148 A CN A2009101085148A CN 200910108514 A CN200910108514 A CN 200910108514A CN 101604328 A CN101604328 A CN 101604328A
- Authority
- CN
- China
- Prior art keywords
- node
- regular expression
- data structure
- search
- webpage
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种互联网信息垂直搜索方法,包括步骤:A.建立搜索配置文件,搜索配置文件中存储生成不同URL地址的正则表达式组和产生搜索结果信息对的正则表达式组;B.建立包括不同层次结点的动态搜索树的根结点和相应的数据结构,同时根据URL地址获取网页源代码,将网页源代码存储到所述数据结构中,对所述网页源代码和生成不同URL地址的正则表达式组进行匹配操作,根据匹配结果生成所述动态搜索树的子结点;C.对所述网页源代码和产生搜索结果信息对的正则表达式组进行匹配操作,根据匹配结果提取最终搜索结果信息对,存储最终搜索结果信息对。
Description
技术领域
本发明涉及互联网搜索技术领域,具体涉及一种互联网信息垂直搜索方法。
背景技术
互联网信息规模不断膨胀,使得对信息的过滤处理要求越来越高。通用的搜索引擎并不能很好满足一些用户的专业性要求。互联网信息垂直搜索是相对通用搜索的信息量大、查询不准确、深度不够等提出来的新的搜索引擎服务模式,是搜索引擎的细分和延伸。其特点就是“专、精、深”,相比较通用搜索的海量信息无序化,互联网信息垂直搜索则更加专注、具体和深入。它为需要赢得市场的用户提供的并不是上百甚至上千万相关网页,而是范围极为缩小、极具针对性的具体信息,能够满足应用中越来越广的特定需求。
现有技术互联网信息垂直搜索方法有如下缺点:
1)太过简单,只能简单地提取URL,访问URL,不能很好地筛选所需的信息;
2)通用性差,对于一些商业化的实施方案,其实现并不具有良好的可扩展性。
发明内容
本发明要解决的技术问题是提供一种互联网信息垂直搜索方法,克服现有技术的互联网信息垂直搜索方法太过简单,不能很好地筛选所需的信息以及通用性差的缺陷。
本发明为解决上述技术问题所采用的技术方案为:
一种互联网信息垂直搜索方法,包括步骤:
A、建立搜索配置文件,搜索配置文件中存储生成不同URL地址的正则表达式组和产生搜索结果信息对的正则表达式组;
B、建立包括不同层次结点的动态搜索树的根结点和相应的数据结构,同时根据URL地址获取网页源代码,将网页源代码存储到所述数据结构中,对所述网页源代码和生成不同URL地址的正则表达式组进行匹配操作,根据匹配结果生成所述动态搜索树的子结点;
C、对所述网页源代码和产生搜索结果信息对的正则表达式组进行匹配操作,根据匹配结果提取最终搜索结果信息对,存储最终搜索结果信息对。
所述的互联网信息垂直搜索方法,其中所述步骤A包括步骤:
A1、建立搜索配置文件,在所述搜索配置文件中设置第一正则表达式组、第二正则表达式组和第三正则表达式组;
所述的互联网信息垂直搜索方法,其中所述步骤B包括步骤:
A2、创建动态搜索树的根结点以及相应的根结点数据结构,读取所述搜索配置文件中的第一正则表达式组,根据第一正则表达式组中的正则表达式依次生成获取第一类网页的第一URL参数,将第一URL参数存储到所述根结点数据结构中;
A3、根据第一URL参数获取第一类网页,由所述根结点派生与第一类网页对应的中间结果结点以及相应的中间结果数据结构,将第一类网页的源代码存储到所述中间结果数据结构中;
A4、读取所述搜索配置文件中的第二正则表达式组,依次对所述中间结果结点进行如下处理:
A41、将第二正则表达式组中的正则表达式依次与第一类网页的源代码进行匹配操作,由匹配结果依次生成获取第二类网页的第二URL参数;
A42、根据第二URL参数获取第二类网页,由所述中间结果结点派生与第二类网页对应的中间结果结点以及相应的中间结果数据结构,将第二类网页的源代码存储到相应的中间结果数据结构中;
A43、返回步骤A41,直到匹配没有结果为止;
A5、读取所述搜索配置文件中的第三正则表达式组,依次对所述中间结果结点进行如下处理:
A51、将第三正则表达式组中的正则表达式依次与第二类网页的源代码进行匹配操作,由匹配结果依次生成获取第三类网页的第三URL参数;
A52、根据第三URL参数获取第三类网页,由所述中间结果结点派生与第三类网页对应的叶子结点以及相应的叶子数据结构,将第三类网页的源代码存储到所述叶子数据结构中;
A53、返回步骤A51,直到匹配没有结果为止;
A6、读取所述搜索配置文件中的第三正则表达式组,依次对所述叶子结点进行如下处理:
A61、将第三正则表达式组中的正则表达式依次与第三类网页的源代码进行匹配操作,由匹配结果依次生成获取第三类网页的第三URL参数;
A62、根据第三URL参数获取第三类网页,由所述叶子结点派生与第三类网页对应的叶子结点以及相应的叶子数据结构,将第三类网页的源代码存储到相应的叶子数据结构中;
A63、返回步骤A61,直到匹配没有结果为止;
所述的互联网信息垂直搜索方法,其中所述步骤C包括步骤:
A7、读取所述搜索配置文件中的第三正则表达式组,依次对所述叶子结点进行如下处理:
A71、将第三正则表达式组中的正则表达式依次与第三类网页的源代码进行匹配操作,由匹配结果依次生成信息对;
A72、存储所述信息对。
所述的互联网信息垂直搜索方法,其中所述步骤A7包括步骤:A73、如果匹配操作结束,并且所述叶子结点没有派生的叶子结点,则删除所述叶子结点。
所述的互联网信息垂直搜索方法,其中还包括步骤A8:依次对所述中间结果结点进行如下处理:如果所述中间结果结点没有派生的中间结果结点或叶子结点,则删除所述中间结果结点。
所述的互联网信息垂直搜索方法,其中所述根结点数据结构包括爬网标识Crawl_flag布尔变量,当所述根结点派生中间结果结点的操作结束后,所述爬网标识Crawl_flag布尔变量的值设为真;所述中间结果数据结构包括爬网标识Crawl_flag布尔变量,当所述中间结果结点派生中间结果结点和叶子结点的操作结束后,所述爬网标识Crawl_flag布尔变量的值设为真;所述叶子结点数据结构包括爬网标识Crawl_flag布尔变量,当所述叶子结点派生叶子结点的操作结束并且正则表达式与第三类网页源代码的匹配操作结束后,所述爬网标识Crawl_flag布尔变量的值设为真。
所述的互联网信息垂直搜索方法,其中所述根结点数据结构、所述中间结果数据结构和所述叶子结点数据结构都包括指针变量,所述指针变量指向派生结点的地址。
所述的互联网信息垂直搜索方法,其中所述搜索配置文件设为XML描述符文件,第三正则表达式组包括多个正则表达式组,对所述正则表达式组依顺序进行懒惰匹配。
所述的互联网信息垂直搜索方法,其中所述根结点数据结构、所述中间结果数据结构和所述叶子结点数据结构都包括结点类型变量,所述结点类型变量用于标识当前结点的类型,在相应的数据结构中分别取值:QUERY、RESULT和DETAIL。
本发明的有益效果:本发明互联网信息垂直搜索方法将网页信息按层次进行划分,分别用动态搜索树中的根结点、中间结果结点和叶子结点进行刻画表征,保证了网页信息搜索的全面性和配置搜索条件时的灵活性,本发明互联网信息垂直搜索方法通过编辑搜索配置文件,可以快速构建一个搜索应用,扩展性强,是互联网信息垂直搜索方法的重大进步。
附图说明
本发明包括如下附图:
图1为本发明获取网页信息的流程示意图;
图2为本发明动态搜索树示意图;
图3为本发明搜索流程图;
图4为本发明动态搜索树在搜索过程中的变化形态之一;
图5为本发明动态搜索树在搜索过程中的变化形态之二;
图6为本发明动态搜索树在搜索过程中的变化形态之三;
图7为本发明动态搜索树在搜索过程中的变化形态之四;
图8为本发明实施例搜索配置文件示意图;
图9为本发明实施例动态搜索树变化形态之一;
图10为本发明实施例动态搜索树变化形态之二;
图11为本发明实施例动态搜索树变化形态之三;
图12为本发明实施例动态搜索树变化形态之四;
图13为本发明实施例动态搜索树变化形态之五;
图14为本发明实施例动态搜索树变化形态之六;
图15为本发明实施例动态搜索树变化形态之七;
图16为本发明搜索结果后期处理示意图。
具体实施方式
下面根据附图和实施例对本发明作进一步详细说明:
本发明互联网信息垂直搜索方法首先概括抽象出网站内容的层次,在程序中用动态搜索树的数据结构建立模型。在XML格式的配置文件中使用带命名组的正则表达式对建模后的网站内容分类描述。然后根据配置文件进行网站内容的自动搜索,提取信息,筛选信息,并存入指定数据库。
以下详细阐述方案的实现过程:
(1)对网站内容分布的抽象
为完成对信息来源网站的信息挖掘,首先要对其上的网页内容进行抽象概括。来源网站一般来说,所含信息量是十分庞大的。但仔细看来,绝大多数的网站,其传递给用户的信息的方式是:
a.进入搜索页面;
b.得到搜索结果列表;
c.得到目标记录的详细信息。
(2)数据结构与处理方法
(2.1)动态搜索树建模
如图1所示,是一种非常直观的方式展现了搜索来源网站中的网页层次关系。如图2所示,为便于计算机程序化处理,我们把一个网站中所有的相关信息内容抽象组织成为一棵动态搜索树,其中:
三角形——表示类型为QUERY的结点;
方形——表示类型为RESULT的结点;
圆圈——表示类型为DETAIL的结点。
图2中涂黑的部分表示已被访问。
现在我们详细了解下动态搜索树结构的性质:
(A)根据动态搜索树结点的不同处理方式,将结点分为三类,分别为:
根结点QUERY:对应图2中的三角形结点;
中间结果结点RESULT:对应图2的中的矩形结点;
叶子结点DETAIL:对应图2的中的圆形结点。
每一类结点都建立如表1所示的数据结构:
表1树结点的数据结构
URL | 网络地址 |
HTML | 网页源代码,文本字符串 |
Crawl_flag | 是否已爬行(即根据URL访问得到的HTML)的标志 |
Type | 结点类型 |
Subnodes | 指向子结点的指针 |
(B)树的层次性
各种类型的结点在树中所处的位置的层次性表现十分明显。同时,我们也看到位于同一层次上的结点可能有多个,如图2所示ETAIL结点就有3个,它们都从某一RESULT结点继承而来。这样做的目的就是适应存在多个信息页面的情况。也就是说,最终数据记录的生成需要访问多个信息页面。这也是本发明互联网信息垂直搜索方法中很重要的多模板技术。从树的形态上来看,我们对动态搜索树的设计即讲究垂直分层,也讲究横向并列。这种设计下树所包含的信息量就非常丰富,而形式却是相对简洁的。
(C)图2中所表示的树并非静态不变的,它只反映了程序的某一运行时刻时的快照。
(D)程序的核心引擎部分实际上就是对动态搜索树的遍历。
(2.2)动态搜索树的遍历
如图3的流程图所示,对动态搜索树的主要操作是遍历,三种类型的结点分别对应各自的遍历算法,另外,对树的裁剪优化也属于遍历操作,因此一共有4个遍历过程:
crawlQuery()
递归遍历树,如果当前结点类型为根结点QUERY,则根据搜索配置文件中的关键字信息,生成访问网页的URL,利用http协议中的get语句获取网页的源代码,由根结点QUERY派生中间结果结点(RESULT结点),同时设置根结点QUERY的爬网标识Crawl_flag为true。如果有新结点的加入,crawlQuery()返回false,否则crawlQuery()返回true。crawlResult()
递归遍历树,如果当前结点类型为中间结果结点RESULT,则根据中间结果结点数据结构中URL变量所保存的URL,利用http协议中的get语句获取网页的源代码,将网页的源代码存储于中间结果结点数据结构中的HTML变量中,读取搜索配置文件中中间结果结点RESULT的正则表达式,与网页的源代码进行匹配操作,根据匹配结果,由中间结果结点RESULT派生新的中间结果结点RESULT结点或叶子结点DETAIL,同时设置中间结果结点RESULT的爬网标识Crawl_flag为true。如果有新结点的加入,crawlResult()返回false,否则crawlResult()返true。
CrawlDetail()
递归遍历树,如果当前结点类型为叶子结点DETAIL,则根据叶子结点数据结构中URL变量所保存的URL,利用http协议中的get语句获取网页的源代码,将网页的源代码存储于叶子结点数据结构中的HTML变量中,读取搜索配置文件中叶子结点DETAIL的正则表达式,与网页的源代码进行匹配操作,根据匹配结果,将得到的信息对放入缓存中,以备最后写入数据库。由叶子结点DETAIL派生新的叶子结点DETAIL。同时设置叶子结点DETAIL的爬网标识Crawl_flag为true。如果有新结点的加入,CrawlDetail()返回false,否则CrawlDetail()返true。
EffectTree()
递归遍历树,如果叶子结点DETAIL的爬网标识Crawl_flag为true,并且没有派生的叶子结点DETAIL,则删除该叶子结点DETAIL;如果中间结果结点RESULT的爬网标识Crawl_flag为true,并且没有派生的中间结果结点RESULT或叶子结点DETAIL,则删除该中间结果结点RESULT;这样就达到了裁剪动态搜索树的目的,只让动态搜索树保持其必要的部分。
从以上的描述可以看出,动态搜索树的遍历与一般的树遍历的明显区别是动态搜索树在遍历过程中可能会生长,即增加新的结点。事实上,树的生长与裁剪都是在遍历中完成的,这也是称之为动态搜索树的原因。
(2.3)核心算法
在了解对树的四个关键遍历过程后,我们就可以展示程序的核心算法过程。本质上它就是对四个遍历过程一种组织策略。
如下为算法流程示意图:
Void crawlEngine()
{
/*每个网站都具备一个唯一动态搜索树*/
urlNode thisWebTree=thisWeb.m_urltree;
/*
*递归遍历QUERY结点。
*/
CrawleQuery(thisWeb,thisWebTree);
/*
*递归遍历RESULT结点。
*crawlResult()返回false表示树仍在生长。
*/
while(false==CrawleResult(thisWeb,thisWebTree))
{
/*
*递归遍历DETIAL结点。
*/
CrawleDetail(thisWeb,thisWebTree);
/*
*裁剪树,优化树结构
*/
EffectTree(thisWeb,thisWebTree);
}
}
函数crawlEngine()即程序执行的主函数,算法中EffectTree()是对动态搜索树进行裁剪,即对满足以下条件的结点进行删除操作:
1.该结点已被访问(相应的crawl_flag为true)。
2.其所有子结点都被访问。
在算法的每次循环当中,都会进行一次EffectTree操作。这就保证了动态搜索树不会出现爆炸式的生长。
(2.4)动态搜索树的生命周期
将算法流程中的循环部分即while语句部分表示为-Loop Traversing,虚线所表示的是新加入的结点。
如图4所示:
1.从一个初始点——QUERY结点开始。crawlQuery操作后,增加4个新的RESULT结点。
2.一次Loop Traversing操作。访问左端一个RESULT结点,增加一个新的RESULT结点,与两个新的DETAIL结点。
如图5所示:
3.一次Loop Traversing操作。访问左端一个RESULT结点,增加一个并列的新的RESULT结点,与一个新的DETAIL结点。
4.若干次Loop Traversing操作。访问左端3个DETAIL结点。
如图6所示:
5.若干次Loop Traversing操作。裁剪3个已完成的DETAIL结点。
6.若干次Loop Traversing操作。裁剪1个已完成的RESULT结点。
如图7所示:
7.若干次Loop Traversing操作。裁剪最后只剩下1个已完成的QUERY结点。
(3).核心配置
a.正则表达式
计算机软件中,一种用来描述字串的标准语法形式。实际应用时,基于效率考虑,应尽可能避免前向匹配。
b.命名组形式的正则表达式
这是一种较为高级的正则表达式,首先它是带有分组的,其次每个分组含有显性的名字。在本发明中,它即有匹配的配置作用,又有描述信息对的作用。
c.信息对
即信息类型,信息值的对应。如(企业名称,百度有限公司),(企业法人,李彦洪)。
d.目标记录
即用户真正感兴趣的信息条目,它包含了多个信息对。
e.平行页面
处于同一层次的页面,也是在程序中URL结点类型相同的页面。
搜索配置文件的配置是本发明的又一关键,QUERY结点对应的正则表达式具有如表2的形式:
表2
http://www.site.com/search.htm?{key}={option} |
其中,花括号中部分为扩展部分,这些扩展点同样配置在XML中,如表3所示:
表3 QUERY结点对应的正则表达式
<key>key1</key><option>o1</option><option>o2</option> |
其中Key,option分别指代了关键字类型与值。RESULT结点对应的正则表达式有两类,分别指代下一结果页与目标记录的概要描述。
DETAIL结点对应的正则表达式描述目标记录的全部信息对。如表4中的正则表达式包含了name,sex,officePhone这三个信息对:
表4命名组形式的正则表达式
class..mp_r(.*?)toclub....(?<name>(.*?)(?=</a>))((.*?)</a>\s*(?<sex>[^\s]*)){0,1}((.*?)<li>([^\d]*)(?<officePhone>[^<]*)){0,1} |
在这类结点的正则表达式配置中,一般要包含多个命名组形式的正则表达式。这些表达式中又分为两类:parallelUrl与non-parallelUrl。区分的标准是前者有组i_paralelUrl的定义,而后者没有。如表4中的表达式是non-parallelUrl类型。在这两类表达式中,描述的都是详细页面(类型为DETAIL),它们的共同协作实现了多模板的功能。它们都可以拥有信息对,也就是说parallelUrl表达式中也可有具体的信息字段。当存在多个表达式时,有一定的组织顺序,一般要按实际访问顺序排列。
DETAIL结点对应的正则表达式可以是多个同级的表达式,已适应不同的网页源内容。比如以下的Exp-2,Exp-3为同级并列的关系,它们对每个类型为DETIAL的结点的HTML文本都会进行懒惰匹配,懒惰匹配就是如果匹配成功则返回,否则进行下一个表达式的匹配,直到成功或全部表达式耗尽。
Exp-2:
(?<parallelUrl>http((?<=http)(.{5,100}?)(?=companyprofile)[^′]*))
(.*?)
class..mp_r(.*?)toclub....(?<name>(.*?)(?=</a>))
((.*?)</a>\s*(?<sex>[^\s]*)){0,1}
((.*?)\((?<position>[^)]*)){0,1}
((.*?)<li>电([^\d]*)(?<officePhone>[^<]*)){0,1}
((.*?)<li>移([^\d]*)(?<mobilePhone>[^<]*)){0,1}
((.*?)<li>传([^\d]*)(?<fax>[^<]*)){0,1}
((.*?)<li>地([^\s]*)([\s]*)(?<addr>[^<]*)){0,1}
((.*?)<li>邮([^\d]*)(?<post>[^<]*)){0,1}
Exp-3:
left.m.>[^>]*.(?<name>[^<]*)
....:.*?\s*(?<sex>[^\s]*)
(?:\s*.(?<position>[^)]*))?
(?:.*?contactInfoDiv(.*?)电(\s)*话[^\d]*(?<officePhone>[^<]*))?
(?:.*?传(\s)*真[^\d]*(?<fax>[^<]*))?
(?:.*?地(\s)*址.[\s]*(?<addr>[^<]*))?
(?:.*?公司网站(.*?)(?<web3>(?<=href..)[^″]*))?
一个具体的企业信息搜索实例
(1)实例需求:
对B2B电子商务网---阿里巴巴进行公司信息挖掘,即将企业名称,企业规模,经营类型,联系人,联系方式,企业性质等相关信息绑定后放入自己的数据库,从而实现建立在其上的企业营销业务。
(2)实例分析:
可以看出,此需求正是垂直搜索的典型应用。应用中,“专,精,深”的信息即商贸企业信息。根据本发明互联网信息垂直搜索方法,只需要简单地修改配置XML文件就可以得到定制后的搜索应用。而在配置文件的过程中,大部分工作就是填写正确的命名组形式的正则表达式。实际应用中,应创建一个关于正则表达式的测试工具,以便随时查看对每个表达式进行匹配操作后的运行结果。
(3)实例运行流程:
如图8所示,先给出对应目标网站——阿里巴巴网的搜索配置文件,从搜索配置文件内容可看出,文件中分别对动态搜索树中的三个类型的结点进行了配置,它们在搜索配置文件的路径分别是searchTreeConfig.query,searchTreeConfig.result,searchTreeConfig.detail.
步骤1:
如图9所示,建立树,即建立一个根结点。类型为QUERY。类型为QUERY的结点其URL变量的值用”root”表示。此结点的实际意义是统一树结点的操作。在接下的步骤中,根结点被附加子结点。
步骤2:
如图10所示,对树执行CrawlQuery操作。此操作并不访问URL,而是根据配置文件中的searchTreeConfig.query部分,将portalUrl组合处理成两个新的URL:
http://alibaba.com/search?keywords=机械设备
http://alibaba.com/search?keywords=电子电气
这两个新的URL的产生意味着根结点QUERY派生两个新结点。加入两个新结点后,根结点的crawl-flag设为true,同时subnodes字段也发生了变化。
步骤3:
如图11所示,对树执行crawlResult操作。由于树中有两个新的RESULT类型结点,因此该操作后访问新结点中的URL,得到的网页的源代码放入HTML变量以待处理。分析处理过程中要使用到搜索配置文件中的searchTreeConfig.result部分中的表达式,如果组i_parallelUrl发生匹配,则添加新的RESULT结点;如果组i_contactUrl发生匹配,则添加新的DETAIL结点。新的RESULT结点代表搜索结果的第二页。两个新的DETAIL结点分别代表公司A与公司B的页面。
步骤4:
对树执行crawlResult与CrawlDetail操作。CrawlDetail操作与CrawlResulte操作类似,也是先访问结点的URL,再对获取到的HTML文本用来自于搜索配置文件中searchTreeConfig.detail部分的表达式进行匹配。并对匹配所产生的结果--信息对如表5所示,输入给缓存模块。
表5信息对示例
公司名 | 上海领星机械设备有限公司 |
联系人 | 杨伟伟 先生(业务 经理) |
电话 | 86 021 51083420 |
移动电话 | 13818455788 |
传真 | 86 021 51083421 |
经营范围 | 打包机;收缩机;封箱机;液压车;缠绕机;自动包装机;真空机;搬运车;打包带;封箱胶带;堆高车;... |
在CrawlDetail中,仍然会产生新的DETAIL结点,这是由组i_parallelUrl是否匹配成功决定的。此步骤完成后,树形态如图12所示。
步骤5:
如图13所示,对树执行EffectTree操作。此操作目的在于精简树结构,即将已完成的结点进行删除操作。
步骤6:
如图14所示,返回到步骤3。即执行CrawlResult操作,遍历访问树中未被访问的RESULT类型的结点。同样地,在对返回的HTML文本处理过程中,增加了新的结点。接下来,进行操作CrawlDetail,EffectTree,CrawResult,CrawlDetail...一直到CrawlResult返回true,即树不再增加新结点的情况下,搜索完成,最终树的形态是如图15所示。
后期处理
如图16所示,这一阶段的工作总的来说是对原始数据的二次加工过程。其中包括了新字段的生成,去除重复或错误数据,提炼数据,生成数据关键字索引等。在检索时,有两条路径可以选择,即缓存与索引数据。优先选择缓存,如果没有命中缓存,则检索索引数据,再从数据库中获取记录条。
(4)实例结果:
依本发明互联网信息垂直搜索方法实现后的系统运行时有效记录的生成速度大约为0.2条每秒每台搜索终端每线程,当有效数据量达到百万规模时,上线的系统可以很好地满足最终用户的检索要求。
本领域技术人员不脱离本发明的实质和精神,可以有多种变形方案实现本发明,以上所述仅为本发明较佳可行的实施例而已,并非因此局限本发明的权利范围,凡运用本发明说明书及附图内容所作的等效结构变化,均包含于本发明的权利范围之内。
Claims (10)
1、一种互联网信息垂直搜索方法,其特征在于,包括步骤:
A、建立搜索配置文件,搜索配置文件中存储生成不同URL地址的正则表达式组和产生搜索结果信息对的正则表达式组;
B、建立包括不同层次结点的动态搜索树的根结点和相应的数据结构,同时根据URL地址获取网页源代码,将网页源代码存储到所述数据结构中,对所述网页源代码和生成不同URL地址的正则表达式组进行匹配操作,根据匹配结果生成所述动态搜索树的子结点;
C、对所述网页源代码和产生搜索结果信息对的正则表达式组进行匹配操作,根据匹配结果提取最终搜索结果信息对,存储最终搜索结果信息对。
2、根据权利要求1所述的互联网信息垂直搜索方法,其特征在于:所述步骤A包括步骤:
A1、建立搜索配置文件,在所述搜索配置文件中设置第一正则表达式组、第二正则表达式组和第三正则表达式组;
3、根据权利要求2所述的互联网信息垂直搜索方法,其特征在于:所述步骤B包括步骤:
A2、创建动态搜索树的根结点以及相应的根结点数据结构,读取所述搜索配置文件中的第一正则表达式组,根据第一正则表达式组中的正则表达式依次生成获取第一类网页的第一URL参数,将第一URL参数存储到所述根结点数据结构中;
A3、根据第一URL参数获取第一类网页,由所述根结点派生与第一类网页对应的中间结果结点以及相应的中间结果数据结构,将第一类网页的源代码存储到所述中间结果数据结构中;
A4、读取所述搜索配置文件中的第二正则表达式组,依次对所述中间结果结点进行如下处理:
A41、将第二正则表达式组中的正则表达式依次与第一类网页的源代码进行匹配操作,由匹配结果依次生成获取第二类网页的第二URL参数;
A42、根据第二URL参数获取第二类网页,由所述中间结果结点派生与第二类网页对应的中间结果结点以及相应的中间结果数据结构,将第二类网页的源代码存储到相应的中间结果数据结构中;
A43、返回步骤A41,直到匹配没有结果为止;
A5、读取所述搜索配置文件中的第三正则表达式组,依次对所述中间结果结点进行如下处理:
A51、将第三正则表达式组中的正则表达式依次与第二类网页的源代码进行匹配操作,由匹配结果依次生成获取第三类网页的第三URL参数;
A52、根据第三URL参数获取第三类网页,由所述中间结果结点派生与第三类网页对应的叶子结点以及相应的叶子数据结构,将第三类网页的源代码存储到所述叶子数据结构中;
A53、返回步骤A51,直到匹配没有结果为止;
A6、读取所述搜索配置文件中的第三正则表达式组,依次对所述叶子结点进行如下处理:
A61、将第三正则表达式组中的正则表达式依次与第三类网页的源代码进行匹配操作,由匹配结果依次生成获取第三类网页的第三URL参数;
A62、根据第三URL参数获取第三类网页,由所述叶子结点派生与第三类网页对应的叶子结点以及相应的叶子数据结构,将第三类网页的源代码存储到相应的叶子数据结构中;
A63、返回步骤A61,直到匹配没有结果为止;
4、根据权利要求3所述的互联网信息垂直搜索方法,其特征在于:所述步骤C包括步骤:
A7、读取所述搜索配置文件中的第三正则表达式组,依次对所述叶子结点进行如下处理:
A71、将第三正则表达式组中的正则表达式依次与第三类网页的源代码进行匹配操作,由匹配结果依次生成信息对;
A72、存储所述信息对。
5、根据权利要求4所述的互联网信息垂直搜索方法,其特征在于:所述步骤A7包括步骤:A73、如果匹配操作结束,并且所述叶子结点没有派生的叶子结点,则删除所述叶子结点。
6、根据权利要求5所述的互联网信息垂直搜索方法,其特征在于:还包括步骤A8:依次对所述中间结果结点进行如下处理:如果所述中间结果结点没有派生的中间结果结点或叶子结点,则删除所述中间结果结点。
7、根据权利要求6所述的互联网信息垂直搜索方法,其特征在于:所述根结点数据结构包括爬网标识Crawl_flag布尔变量,当所述根结点派生中间结果结点的操作结束后,所述爬网标识Crawl_flag布尔变量的值设为真;所述中间结果数据结构包括爬网标识Crawl_flag布尔变量,当所述中间结果结点派生中间结果结点和叶子结点的操作结束后,所述爬网标识Crawl_flag布尔变量的值设为真;所述叶子结点数据结构包括爬网标识Crawl_flag布尔变量,当所述叶子结点派生叶子结点的操作结束并且正则表达式与第三类网页源代码的匹配操作结束后,所述爬网标识Crawl_flag布尔变量的值设为真。
8、根据权利要求7所述的互联网信息垂直搜索方法,其特征在于:所述根结点数据结构、所述中间结果数据结构和所述叶子结点数据结构都包括指针变量,所述指针变量指向派生结点的地址。
9、根据权利要求8所述的互联网信息垂直搜索方法,其特征在于:所述搜索配置文件设为XML描述符文件,第三正则表达式组包括多个正则表达式组,对所述正则表达式组依顺序进行懒惰匹配。
10、根据权利要求9所述的互联网信息垂直搜索方法,其特征在于:所述根结点数据结构、所述中间结果数据结构和所述叶子结点数据结构都包括结点类型变量,所述结点类型变量用于标识当前结点的类型,在相应的数据结构中分别取值:QUERY、RESULT和DETAIL。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2009101085148A CN101604328A (zh) | 2009-07-06 | 2009-07-06 | 一种互联网信息垂直搜索方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2009101085148A CN101604328A (zh) | 2009-07-06 | 2009-07-06 | 一种互联网信息垂直搜索方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101604328A true CN101604328A (zh) | 2009-12-16 |
Family
ID=41470060
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2009101085148A Pending CN101604328A (zh) | 2009-07-06 | 2009-07-06 | 一种互联网信息垂直搜索方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101604328A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102663074A (zh) * | 2012-03-31 | 2012-09-12 | 奇智软件(北京)有限公司 | 一种搜索结果页面中链接的连接方法及装置 |
CN103425771A (zh) * | 2013-08-12 | 2013-12-04 | 深圳市华傲数据技术有限公司 | 一种数据正则表达式的挖掘方法及装置 |
CN103793462A (zh) * | 2013-12-02 | 2014-05-14 | 北京奇虎科技有限公司 | 网址净化方法及装置 |
CN104536751A (zh) * | 2014-12-26 | 2015-04-22 | 小米科技有限责任公司 | 网页源码迁移方法和装置 |
RU2622629C2 (ru) * | 2015-03-31 | 2017-06-16 | Закрытое акционерное общество "Лаборатория Касперского" | Способ поиска пути по дереву |
CN108388796A (zh) * | 2018-02-24 | 2018-08-10 | 深圳壹账通智能科技有限公司 | 动态域名验证方法、系统、计算机设备和存储介质 |
CN108399093A (zh) * | 2018-02-28 | 2018-08-14 | 南京天溯自动化控制系统有限公司 | 节点处理方法、装置及电子设备 |
-
2009
- 2009-07-06 CN CNA2009101085148A patent/CN101604328A/zh active Pending
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102663074A (zh) * | 2012-03-31 | 2012-09-12 | 奇智软件(北京)有限公司 | 一种搜索结果页面中链接的连接方法及装置 |
GB2523937A (en) * | 2013-08-12 | 2015-09-09 | Shenzhen Audaque Data Technology Ltd | Method and device for mining data regular expression |
CN103425771A (zh) * | 2013-08-12 | 2013-12-04 | 深圳市华傲数据技术有限公司 | 一种数据正则表达式的挖掘方法及装置 |
CN103425771B (zh) * | 2013-08-12 | 2016-12-28 | 深圳市华傲数据技术有限公司 | 一种数据正则表达式的挖掘方法及装置 |
WO2015021879A1 (zh) * | 2013-08-12 | 2015-02-19 | 深圳市华傲数据技术有限公司 | 一种数据正则表达式的挖掘方法及装置 |
CN103793462B (zh) * | 2013-12-02 | 2016-08-31 | 北京奇虎科技有限公司 | 网址净化方法及装置 |
CN103793462A (zh) * | 2013-12-02 | 2014-05-14 | 北京奇虎科技有限公司 | 网址净化方法及装置 |
CN104536751A (zh) * | 2014-12-26 | 2015-04-22 | 小米科技有限责任公司 | 网页源码迁移方法和装置 |
CN104536751B (zh) * | 2014-12-26 | 2018-04-06 | 小米科技有限责任公司 | 网页源码迁移方法和装置 |
RU2622629C2 (ru) * | 2015-03-31 | 2017-06-16 | Закрытое акционерное общество "Лаборатория Касперского" | Способ поиска пути по дереву |
CN108388796A (zh) * | 2018-02-24 | 2018-08-10 | 深圳壹账通智能科技有限公司 | 动态域名验证方法、系统、计算机设备和存储介质 |
CN108388796B (zh) * | 2018-02-24 | 2021-08-31 | 深圳壹账通智能科技有限公司 | 动态域名验证方法、系统、计算机设备和存储介质 |
CN108399093A (zh) * | 2018-02-28 | 2018-08-14 | 南京天溯自动化控制系统有限公司 | 节点处理方法、装置及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101604328A (zh) | 一种互联网信息垂直搜索方法 | |
CN103902653B (zh) | 一种构建数据仓库表血缘关系图的方法和装置 | |
US9870392B2 (en) | Retrieval method and system | |
CN108446367A (zh) | 一种基于知识图谱的包装行业数据搜索方法及设备 | |
CN100462969C (zh) | 利用互联网为公众提供和查询信息的方法 | |
CN107145496A (zh) | 基于关键词将图像与内容项目匹配的方法 | |
CN107957957A (zh) | 测试用例的获取方法和装置 | |
CN103425687A (zh) | 一种基于关键词的检索方法和系统 | |
CN108446368A (zh) | 一种包装产业大数据知识图谱的构建方法及设备 | |
CN107609152A (zh) | 用于扩展查询式的方法和装置 | |
CN103942712A (zh) | 基于产品相似度的电子商务推荐系统及其方法 | |
CN106407303A (zh) | 数据存储、查询方法及装置 | |
CN102880624A (zh) | 网站导航工具系统 | |
CN106294772A (zh) | 分布式内存列式数据库的缓存管理方法 | |
CN102982095B (zh) | 一种基于叙词表的本体自动生成系统及其方法 | |
CN103150663A (zh) | 一种网络投放数据投放的方法和装置 | |
CN104281701A (zh) | 分布式多尺度空间数据查询方法及系统 | |
CN110134845A (zh) | 项目舆情监控方法、装置、计算机设备及存储介质 | |
CN103218443A (zh) | 一种面向博客网页的网页检索系统及方法 | |
CN103377240B (zh) | 信息提供方法、处理服务器及合并服务器 | |
CN103838824A (zh) | 一种用于空间信息分析的云计算中间件技术 | |
CN111581479B (zh) | 一站式数据处理的方法、装置、存储介质及电子设备 | |
CN102760150A (zh) | 基于属性重现和标签路径的网页抽取方法 | |
JP2017157193A (ja) | 画像とコンテンツのメタデータに基づいてコンテンツとマッチングする画像を選択する方法 | |
CN115885275A (zh) | 用于使用自然语言描述检索图像的系统和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
DD01 | Delivery of document by public notice |
Addressee: Zhang Daijun Document name: Notification of Publication and of Entering the Substantive Examination Stage of the Application for Invention |
|
DD01 | Delivery of document by public notice |
Addressee: Zhang Daijun Document name: Notification of an Office Action |
|
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20091216 |