假设我有一个来自数据库的员工姓名列表(数千,在不久的将来可能是数万)。为了简化问题,假设每个名字/姓氏组合都是唯一的(大的if,但是相切)。
我还有一个与业务有关的新闻内容的RSS流(同样,每天可能有数百个项目)。
我想做的是检测员工姓名是否出现在多个段落的新闻项目中,如果是,则“标记”该项目及其所讨论的人。
在一个新闻项目中可能有多个员工命名,因此在第一次正面匹配后不可能打破循环。
我当然可以强行说出来:对于每个新闻项目,循环遍历每个员工姓名,如果正则表达式返回匹配项,请记下它。
ColdFusion中是否有更简单的方法,还是应该继续使用嵌套循环?
答案 0 :(得分:7)
把它扔出去就像你可能做的那样......
听起来你几乎一致拥有的员工姓名明显多于每篇帖子的单词。以下是我可以处理的方法:
拥有一个始终运行的CF应用程序,它将引入feed和onAppStart
所以查找中的一个键可能是“Vanessa”,其结构有2个键(“Johnson”和“Forta”)作为其值。
然后,您解析的每篇文章,只是listToArray,其中一个空格作为分隔符,并循环遍历数组,使用每个标记执行简单的structKeyExists。对于匹配项,请检查数组中的下一项作为姓氏。
我猜测这比处理多次搜索更加高效,并且几乎没有时间进行编码,你可以非常简单地在任何未来的资源中提供(你的检查员需要一个参数) ,地球上的任何文字。)
有兴趣了解您的路线以及您的实验是否在CF中展示了有关性能的新内容。
答案 1 :(得分:0)
http://cflib.org/index.cfm?event=page.udfbyid&udfid=1908
它不是完美的,也不是最佳的,但它可能是一个有用的第一步或者你,或者给你一些想法。也就是说,它符合我的需要(确定给定的博客评论是否参考了任何列入黑名单的单词)。我展示了它比较一个URL列表,但它可以是任何单词。希望这有点帮助。
答案 2 :(得分:0)
值得探索的另一个选择是利用CF现在附带的Solr引擎。它将为您进行字符串搜索繁重的工作,您可以专注于动态地保持您的集合是最新的,并在新的Feed项目进入时进行优化。
祝你好运!