使用Ruby解析具有数百个标记的结构化和半结构化文本

使用Ruby解析具有数百个标记的结构化和半结构化文本,ruby,ruby-on-rails-3,Ruby,Ruby On Rails 3,我将处理10000-50000条记录,每条记录中大约有200-400个字符。我预计我能找到的搜索词数量不会超过1500个(都与当地企业有关) 我想创建一个函数,将结构化标记与术语列表进行比较,以标记数据 这些术语基于业务描述。因此,例如,一个[爵士酒吧],[夜总会],[体育酒吧],或[葡萄酒酒吧]都将对应于对[酒吧]的查询 通常这些数据都有一些现有的标记,所以我也可以为第一个过程创建一个严格的层次结构,然后在没有确定的现有标记的情况下进行第二个过程 实现这一点最敏感的性能方法是什么?我可以有一个

我将处理10000-50000条记录,每条记录中大约有200-400个字符。我预计我能找到的搜索词数量不会超过1500个(都与当地企业有关)

我想创建一个函数,将结构化标记与术语列表进行比较,以标记数据

这些术语基于业务描述。因此,例如,一个
[爵士酒吧]
[夜总会]
[体育酒吧]
,或
[葡萄酒酒吧]
都将对应于对
[酒吧]
的查询

通常这些数据都有一些现有的标记,所以我也可以为第一个过程创建一个严格的层次结构,然后在没有确定的现有标记的情况下进行第二个过程

实现这一点最敏感的性能方法是什么?我可以有一个包含所有关键字的表,并尝试将它们与每个数据段进行匹配。在匹配现有标记的情况下,这很简单,而在处理自由文本时就不那么简单了


我正在使用Heroku/Postgresql,使用搜索引擎和Ruby gem是非常安全的。是的,有一些配置开销,但我还没有找到Sphinx让我失望的场景。:-)


如果您有30-60分钟的时间来修改设置,请尝试一下。我一直在使用Sphinx在一个数据库表中搜索600000多条记录,其中包含复杂的查询(3个单独的搜索标准+2个单独的字段分组/排序),我在0.625秒内得到了结果,这一点都不坏,我相信这比用纯Ruby代码完成的任何事情都要好。

您希望查询/工作发生在哪里?在PostgreSQL中还是在Ruby代码中?这是一次性任务,还是常规工作?当你识别标签时,你想做什么?数一数命中率?用其他东西替换它们?这是一个每天/每周缓存特定数据和元数据的作业。我们有一个基于标记的查询机制,因此我们将为缓存的记录附加一个标记,并保持标记项的总数。有8个顶级标签,每个标签有2-8个叶标签。谢谢不确定这是否适合您的情况,但请查看Redis和Elasticsearch。