关于ifDateUnit函数的分析
bool NewsPageAnalysis::ifDateUnit(int unit, tParsedDate & datep, bool & iffutretime)
{
}
函数包括如下启发式规则,举例如下:
1. 如果文本单元是连接,那么不可能是日期
2. 如果文本单元出现在开头8个字节或者80个字节以后的部分都不可能是日期?
3. 如果汉字百分比超过85%则不是日期
4. 。。。
5. 合法日期模式
函数大量硬编码,每个过程端彼此独立,却在一个函数中堆砌,每一条启发式规则都不断堆砌在这个函数中,该函数的进化性不强。
该函数执行了两个过程一个是判断文本中是否含日期,第二个过程是如果是日期给datep赋值,破坏了单一责任原则。
比较好的修改方法如下:伪码形式
Abstract class DatePatternBase {定义接口bool parse(int unit bool & iffutretime)=0,bool PatternsMode()=0}
Abstract class TextUnitDatePattern: DatePatternBase //合法模式
Abstract class TextUnitDateAntiPattern: DatePatternBase //非法模式
Class LinkNotDataPattern: TextUnitDateAntiPattern
Class LocationExpNotDataPattern: TextUnitDateAntiPattern
Class ChineseWordRationHighNotDataPattern: TextUnitDateAntiPattern
Class ValidDataPattern: TextUnitDatePattern
Class DataAnalysisFramework
[
Public: bool ifDateUnit(int unit bool & iffutretime)
Create();
Private: bool RegisterAnalysisPatterns(DatePatternBase patterns)
Private: list< DatePatternBase > m_ptterns;
]
Create()过程中大概含有以下代码
{
RegisterAnalysisPatterns(new LinkNotDataPattern());
RegisterAnalysisPatterns(new LocationExpNotDataPattern ());
RegisterAnalysisPatterns(new ChineseWordRationHighNotDataPattern ());
RegisterAnalysisPatterns(new ValidDataPattern());
}
ifDateUnit()函数中含有以下代代码
{
For i=0 to m_ptterns.len;
If(m_patterns[i].mode = AntiPatterns)
{
if(m_patterns[i]. parse (unit,iffutretime))
{
Return false;
}
}
Else if(m_patterns[i].mode = ValidPatterns)
{
Return m_patterns[i]. parse (unit,iffutretime));
}
Else{}
}
这样无论是修改还是增加新的启发式规则都比较简洁。
分享到:
相关推荐
这里我们将深入探讨倒排索引、主题爬虫、页面分析、人工智能以及搜索引擎的总体流程框架。 一、倒排索引 倒排索引是搜索引擎实现快速查询的基础。在传统索引中,我们通过关键词找到文档;而在倒排索引中,我们反其...
在本资料包中,包含了多个与搜索引擎框架和算法相关的文档,让我们逐一探讨这些主题。 首先,"Crawling.pdf"涉及的是网络爬虫技术。网络爬虫是搜索引擎获取网页信息的第一步,它们自动遍历互联网上的页面,抓取内容...
《基于大规模日志分析的搜索引擎用户行为分析》一文通过对搜狗搜索引擎一个月内近5000万条查询日志的分析,揭示了中文搜索引擎用户的查询习惯和行为模式,这对于改进搜索引擎算法以及提高检索结果的质量具有重要意义...
《迷你文件搜》软件系统的需求分析说明书是一份详尽的文档,旨在定义和明确该搜索引擎系统的核心功能和非功能需求。这份文档对于项目的成功实施至关重要,因为它为开发团队提供了清晰的指导,确保软件的设计和开发...
搜索引擎页面分析和构建元搜索引擎是IT领域中的一个重要话题,尤其在大数据时代,信息检索和处理技术扮演着关键角色。在这个项目中,我们将基于C#语言进行实现,这是一门广泛应用于开发桌面应用、Web应用以及服务端...
4. **搜索引擎优化**:对于大型网站,Solr可以帮助构建站内搜索引擎,优化用户体验。 总的来说,Lucene作为基础的全文检索库,提供了强大的文本处理和索引能力;而Solr则在此基础上,提供了更完善的搜索服务和企业...
### Google搜索引擎分析 #### 一、引言 Google搜索引擎自其问世以来,一直是互联网搜索领域的领头羊。本文旨在深入探讨Google搜索引擎的核心技术及其背后的原理,特别是基于Sergey Brin和Lawrence Page(即拉里·...
本毕业论文以“WEB搜索引擎分析、设计与实现”为题,详细探讨了搜索引擎的工作机制、系统架构、理论基础以及实现方法,并通过Heritrix和Lucene这两个流行的框架进行实例分析和设计实现。搜索引擎核心代码与相关图片...
其中内容均为前段时间研究开源搜索引擎时搜集参考的资料,非常齐全包含的内容有: Computing PageRank Using Hadoop.ppt Google的秘密PageRank彻底解说中文版.doc JAVA_Lucene_in_Action教程完整版.doc Java开源搜索...
**标题解析:** "geomesa空间大数据分析框架" 指的是Geomesa,一个开源的、分布式的地理空间数据存储和分析系统。它专为处理海量的空间数据而设计,利用现代大数据处理平台如Hadoop和Spark进行高效的数据管理和分析...
搜狗搜索日志分析系统是一种用于处理和解析大量搜索引擎日志数据的工具,旨在帮助我们理解用户行为、优化搜索引擎性能以及改进搜索算法。在这个系统中,通常会使用大数据处理框架如Hadoop进行离线分析,以便在海量...
在IT领域,爬虫搜索和搜索引擎是至关重要的技术,它们为获取、整理和提供网络上的海量信息提供了有效手段。本文将深入探讨这些概念,并通过一个简单的Java爬虫程序实例进行说明。 首先,让我们理解什么是爬虫。爬虫...
搜索引擎使用倒排索引来加速文本搜索;网络路由算法利用图论优化路径选择;机器学习中,决策树和神经网络等模型也基于特定的数据结构和算法。 4. **ljg_resource1**: 虽然具体资源未详述,但可能包含讲解数据结构和...
2. **理论框架构建**:基于理论分析,提出了一个包含四个大类(39个具体指标)的搜索引擎质量评价指标体系。这四大类分别是:评价检索结果质量的指标、评价服务质量的指标、影响检索结果质量的因素以及评价检索过程...
在这个“人工智能-项目实践-搜索引擎-简易的博客搜索引擎后续有时间优化”的项目中,我们主要关注的是构建一个基于Python的人工智能搜索引擎。这个搜索引擎可能是针对博客内容进行索引和检索的,旨在帮助用户快速...
"面向科研管理的搜索引擎智能分析系统的设计与实现"是一个旨在优化科研信息处理的项目,它结合了搜索引擎技术和人工智能算法,以提高科研管理的效率和精确性。下面我们将深入探讨这个系统的相关知识点。 首先,我们...
在"黎吾平-日志分析场景下的搜索引擎改进1"这个主题中,我们可以深入探讨搜索引擎在日志分析领域的优化和改进。搜索引擎是信息技术中的关键组件,尤其在处理大量日志数据时,其性能和效率至关重要。以下是这个话题...