模糊运行时搜索,不使用数据库\索引

时间:2010-07-11 18:33:29

标签: python full-text-search fuzzy-search

我需要通过检查预定义字符串的模糊匹配的每个条目来过滤文本文章流(我正在搜索拼写错误的产品名称,有时他们有不同的单词顺序和额外的非字母字符,如“:”或“,” )。

通过将这些文章放在sphinx索引中并对其执行搜索,我获得了出色的结果,但不幸的是我每秒都会收到数百篇文章并且在每篇文章太慢之后更新索引(我明白它不是为这样的任务而设计的) )。我需要一些库,它可以构建小~100kb文本的内存索引并对其进行模糊搜索,是否存在这样的事情?

2 个答案:

答案 0 :(得分:1)

此问题与Bayesian spam filtering几乎完全相同,已经为此编写的工具可以根据您的标准进行培训,以便进行识别。

在回复评论时添加

那你现在如何将流分区为垃圾箱?如果您已经有分离文章的语料库,只需将其输入分类器即可。贝叶斯分类器是在上下文中进行模糊内容匹配的方法,可以将从垃圾邮件到核苷酸到天文光谱类别的所有内容进行分类。

你可以使用较少的随机方法(例如Levenshtein),但在某些时候你必须描述命中和未命中之间的区别。贝叶斯方法的美妙之处,特别是如果你手边已经有一个隔离的语料库,你实际上并不需要明确地知道你是如何分类的。

答案 1 :(得分:1)

如何使用sqlite fts3扩展名?

创建虚拟表enrondata1使用fts3(内容TEXT);

(您可以创建任意数量的列 - 所有列都将被编入索引)

之后,您可以插入任何您喜欢的内容,并且无需索引重建即可搜索 - 匹配特定列或整行。

http://www.sqlite.org/fts3.html