Php 使用许多不同的查询搜索文档

Php 使用许多不同的查询搜索文档,php,mysql,Php,Mysql,我正在写一个脚本,它将一篇新闻文章作为输入,并返回文章中提到的所有上市公司的列表及其相应的符号。可能会提到约6500个独特的公司名称 我的第一个想法是使用正则表达式从文章中提取所有可能是公司名称的名称。公司名称可能会有很大的不同,但几乎每个单词都以大写字母开头,所以我认为这可能只适用于少数误报(可能是个人与公司共享名称的情况) 下一个问题是将可能的公司名称与所有公司和符号的列表进行比较。我应该如何存储列表?作为一个表,每个条目都有一个公司和符号字段?这似乎是使用公司映射到符号的hashmap的理

我正在写一个脚本,它将一篇新闻文章作为输入,并返回文章中提到的所有上市公司的列表及其相应的符号。可能会提到约6500个独特的公司名称

我的第一个想法是使用正则表达式从文章中提取所有可能是公司名称的名称。公司名称可能会有很大的不同,但几乎每个单词都以大写字母开头,所以我认为这可能只适用于少数误报(可能是个人与公司共享名称的情况)

下一个问题是将可能的公司名称与所有公司和符号的列表进行比较。我应该如何存储列表?作为一个表,每个条目都有一个公司和符号字段?这似乎是使用公司映射到符号的hashmap的理想位置。使用前面提到的映射序列化一个数组,然后在我的脚本(在文章中查找名称)的开头将其取消序列化,这会比mysql解决方案更快吗

并返回文章中提到的所有上市公司及其相应符号的列表

假设文本没有结构,这将是非常困难的

最有效的解决方案是将文章分成一个单词列表,并维护出现在公司名称中的单词列表,对于后一个列表中的每个条目,用于匹配完整公司名称的正则表达式的进一步列表-这将允许您将6500个公司名称缩减为更小的列表,以查找潜在的匹配项。然后对原始文本应用这些正则表达式

是的,在数据库上执行此类操作会快得多,但这绝非一项简单的任务

我的第一个想法是使用正则表达式从文章中提取所有可能是公司名称的名称。公司名称可能会有很大的不同,但几乎每个单词都以大写字母开头,所以我认为这可能只适用于少数误报(可能是个人与公司共享名称的情况)

对于标记或名称引用,我们使用前缀(如
#
@
)是有原因的,它有助于创建模式匹配。我认为,如果你考虑到这种规模的“误报”,你将是在自食其果

我将遵循标准的“股票代码”文章格式,包括公司名称或股票代码格式参考,如
美国公司(ACCO)
,这将允许您只需查找
(*)
参考

除了坚持格式,你很难得到快速、相关和准确的结果

复杂的解决方案是在服务器端处理误报,加载完整的姓名列表并快速查找匹配项,使用一些带有审查警报的警报系统,但这只是一个很大的开销,当一个简单的格式调整可以走很长的路时)