如何查找名称列表中的名称是否出现在ColdFusion的段落中?

Mat*_*old 4 regex coldfusion parsing

假设我有一个来自数据库的员工姓名列表(数千,在不久的将来可能是数万).为了简化问题,假设每个名字/姓氏组合都是唯一的(大的if,但是相切).

我还有一个与业务有关的新闻内容的RSS流(同样,每天可能有数百个项目).

我想要做的是检测员工姓名是否出现在几个段落的新闻项目中,如果是,则"标记"该项目与其谈论的人.

在一个新闻项目中可能有多个员工命名,因此在第一次正面匹配后不可能打破循环.

我当然可以强制执行:对于每个新闻项,循环遍历每个员工姓名,如果正则表达式返回匹配项,请记下它.

在ColdFusion中有一个更简单的方法,还是我应该继续使用我的嵌套循环?

Dav*_*gan 7

把它扔出去就像你可以做的那样......

听起来你几乎一致拥有的员工姓名明显多于每篇帖子的单词.这是我如何处理它:

拥有一个始终运行的CF应用程序,它将引入feed和onAppStart

  1. 从数据库中抓取所有员工
  2. 创建一个应用程序范围的查找结构,首先将名称作为键,将姓氏结构作为值(如果需要,还可以将中间名称兄弟添加到具有第3层的姓氏).

所以查找中的一个关键可能是"Vanessa",其结构有2个键("Johnson"和"Forta")作为其值.

然后,您解析的每篇文章,只是listToArray,并使用空格作为分隔符,并循环遍历数组,使用每个标记执行简单的structKeyExists.对于匹配项,请检查数组中的下一项作为姓氏.

这在处理方面会比执行多次搜索更加高效,并且几乎没有时间编写代码,您可以非常简单地在任何未来的源中提供(您的检查器需要一个参数,地球上的任何文本).

有兴趣了解您的路线以及您的实验是否在CF中暴露了有关性能的新内容.

  • 关于[什么构成有效变量名称]的整个事情(http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WSc3ff6d0ea77859461172e0811cbec22c24-7fd3.html)自CFMX6以来已经过时了.使用关联数组表示法,变量名称可以是*任何*,因此您可以稍微优化您的代码*不*清理名称存储在结构键中的方式.@David:好方法! (3认同)