我想扫描网页中是否存在我字典中的关键字。 已经有人问到这个问题,以强调关键字。然而,我的字典将是巨大的,例如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搜索词。
答案 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, @"|") + ")";