在大文本中查找名称
解析存储在数据库中的大型文本(5000 个单词及更多)、搜索名称的最佳方法是什么?文本将是多语言的。
我的第一个想法是一个相当幼稚的方法,获取所有以大字母开头的单词并将它们与数据库进行比较。但在仅包含小写字母的文本中,这往往会失败。
编辑 文本不是静态的,而是动态的(例如网站)
Best
Macs
What is the best way to parse large texts (5000 words and more), searching names, that are stored in a database? The texts will be multi lingual.
My first idea is a rather naive approach, taking all words beginning with a big letter and compare them against the database. But this tends to fail in texts containing lowercase letters only.
Edit
The texts are not static, but dynamic (e.g. web sites)
Best
Macs
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我在这里制作了一种替换大文本中的多个字符串的方法: 替换许多字符串的更好方法 - C# 中的混淆。也许你可以使用同样的原理。
I made a method for replacing multiple strings in a large text here: A better way to replace many strings - obfuscation in C#. Perhaps you can use the same principle.
使用 RDBMS 的内置全文索引功能。
全文搜索 (SQL Server)
MySQL 全文搜索功能
使用 Oracle Text 进行全文索引
Use your RDBMS's built-in full-text indexing capabilities.
Full-Text Search (SQL Server)
MySQL Full-Text Search Functions
Full Text Indexing using Oracle Text
您可以使用 Aho-Corasick 算法,并使用您想要的名称构造一个字典正在尝试匹配。它与文本中标记的数量加上匹配名称的数量成线性关系。
You can use the Aho-Corasick algorithm, and construct a dictionary with the names that you are trying to match. It's linear in the number of tokens in the text plus the number of matched names.
您将需要一本姓名词典。
或者您可以尝试http://www.opencalais.com/,它知道相当多的名称集合。
You will need a dictionary of names.
Or you can try http://www.opencalais.com/ that knows quite a large collection of names.