假设我有一个来自数据库的员工姓名列表(数千,在不久的将来可能是数万).为了简化问题,假设每个名字/姓氏组合都是唯一的(大的if,但是相切).
我还有一个与业务有关的新闻内容的RSS流(同样,每天可能有数百个项目).
我想要做的是检测员工姓名是否出现在多个段落的新闻项目中,如果是,则“标记”该项目与其所讨论的人员.
在一个新闻项目中可能有多个员工命名,因此在第一次正面匹配后不可能打破循环.
我当然可以强制执行:对于每个新闻项,循环遍历每个员工姓名,如果正则表达式返回匹配项,请记下它.
在ColdFusion中有一个更简单的方法,还是我应该继续使用我的嵌套循环?
解决方法
把它扔出去就像你可以做的那样……
听起来你几乎一致拥有的员工姓名明显多于每篇帖子的单词.这是我如何处理它:
拥有一个始终运行的CF应用程序,它将引入Feed和onAppStart
>从您的数据库中抓取所有员工
>创建一个应用程序范围的查找结构,首先将名称作为键,将姓氏结构作为值(如果需要,还可以将中间名称兄弟添加到具有第3层的姓氏).
所以查找中的一个关键可能是“Vanessa”,其结构有2个键(“Johnson”和“Forta”)作为其值.
然后,你解析的每篇文章,只是listToArray,用空格作为分隔符,并循环遍历数组,用每个标记做一个简单的structKeyExists.对于匹配项,请检查数组中的下一项作为姓氏.
我猜这在处理方面会比在多次搜索时更加高效,并且几乎没有时间编码,你可以非常简单地为任何未来的资源提供信息(你的检查者需要一个参数,地球上的任何文本).