搜索网页中数千个关键字的最快方法

时间:2012-02-23 02:19:34

标签: javascript jquery html search keyword

我想扫描网页中是否存在我字典中的关键字。 已经有人问到这个问题,以强调关键字。然而,我的字典将是巨大的,例如50.000字。最好的方法是什么? 另外,我想在网站上搜索我的图书馆的变体。例如,我的库包含基因名称,如p53。我想在网站上搜索“p53”,“p53蛋白”,“诱导p53”,“抑制p53”“磷酸化p53”。我怎样才能做到这一点?什么应该是最快的方式

或者认为我有2个列表

   List1                List2
   ------              -------    
   inhibits              p21
   induces               p53 
   phosphorylates        Akt
   decreases             Braf
                         cMyc

我希望它能够搜索List1和2的组合。

Such as 
"inhibits cMyc" 
"phoshorylates p21" 

这意味着对于此示例,它需要搜索4 X 5 = 20个关键字。 但是,它可能是200 X 50000 = 1.000.000搜索词。

2 个答案:

答案 0 :(得分:0)

首先,必须对字典编制索引。然后,页面内容也应该被索引并找到字典的匹配项。然后应该处理页面中的实例(例如突出显示,链接到定义等)。

以上内容应该在服务器上完成,除非您想在随机网页上的浏览器中运行它,比如Greasemonkey脚本。我不认为一个索引良好的50,000项词典会在一般PC上看到一个相当现代的浏览器,即使对于有几千个单词的页面也是如此。

修改

如果你有两个列表,那么索引页面上的单词(例如,非常简单的是创建一个排序的唯一列表,其中包含第一个A,第一个B等的键)。使用短列表搜索匹配的单词。

使用第一组单词匹配并在页面中找到它们,获取前面的单词以查看它是否与第二个列表中的单词匹配。用下面的单词做同样的事。 50,000字列表中的简单二进制查找永远不需要超过16次查找。使用字母索引进行第一次查找,然后使用二进制文件,应该将其剪切为每个原始匹配可能有5或6次查找。

您还可以使用对象而不是索引列表并使用if (word in wordList),这也会非常快(请记住包含hasOwnProperty测试)。

如果您只关心使用现代浏览器,请查看网络工作者和web storage

答案 1 :(得分:0)

尝试可能会帮助你

http://www.gotoquiz.com/web-coding/programming/javascript/highlight-words-in-text-with-jquery/

你必须像这样准备你的模式(以获得想法的例子)

string keywords = "Cat, rabbit, dog,hound, fox";
 Regex r = new Regex(@", ?");
keywords = "(" + r.Replace(keywords, @"|") + ")";