我在MySQL中存储了文章和关键字。该网站将预处理新文章以查找有多少匹配关键字,然后更新存储与文章相关的相关关键字的表格。然后,通过突出显示文章中的关键字,将其用于前端,并将用户链接到具有相同匹配关键字的文章。
我关注的是如何有效地进行这种处理。我的想法是:在处理新文章时,它会找到文本的ngrams(最多3或4-gram),然后根据MySQL数据库中的关键字表进行搜索。这可能最终是一个缓慢的混乱,我没有尝试过。但也许我接近这个错误的方式?
如何有效地执行此操作的任何资源都会非常棒。这里使用的语言主要是PHP。
答案 0 :(得分:0)
对于你遇到的fatener,你可以索引你的关键词并用lucene搜索它们,即为你的文档构建查询。 提取关键字最方便的方法是使用大型语料库来构建idf频率,然后提取大多数tfidf单词/短语。 但在你的情况下,限制kwywords设置第一种方法是最好的。
进一步查看maui http://code.google.com/p/maui-indexer/和KEA http://www.nzdl.org/Kea/
答案 1 :(得分:0)
我从未使用PHP来做这件事,但在.NET中,我通常会做samxli所提到的。我将所有关键字加载到哈希表中。我已经完成了多达120,000个关键字,它的工作速度非常快。
.NET哈希表对象具有contains([key])方法。因此,对于文章中的每个单词,我只需要调用:
theHashTable.contains(theWord)
如果确实包含该单词,我会将其编入索引。无需使用其他框架,对我来说效果很好。我不知道hashtables如何在PHP中工作。你必须google那个。我认为他们的普通数组就像哈希表一样工作?
使用散列表的关键是密钥被编入索引以便快速搜索 - 我认为它们使用bTrees,但有人可能会纠正我。如果您不熟悉btree概念,可能需要仔细查看。