我在接受采访时被问到一个面试问题,但我没有得到解决方案。
以下是示例段落,我们的程序应该给出匹配的单词的超链接
“网络协议驱动程序 - 一个完全支持Java技术的网络协议驱动程序将JDBC API调用转换为独立于DBMS的网络协议,然后由服务器转换为DBMS协议。这个网络服务器中间件能够将所有基于Java技术的客户端连接到许多不同的数据库。使用的具体协议取决于供应商。一般来说,这是最灵活的JDBC API替代方案。该解决方案的所有供应商都可能提供适合的解决方案。内联网使用。为了使这些产品也支持Internet访问,他们必须处理Web所带来的安全性,防火墙访问等附加要求。一些供应商正在为其现有的数据库中间件产品添加基于JDBC技术的驱动程序“
我们需要提供超链接的单词可以在数据库表中找到(URL表)
网络协议:www.network-protocol.com
网络协议:www.netprotocol.com
问题是如何更新段落中上述2个单词的链接?
我说我将逐字逐句地进行匹配并更新链接。
如果它是匹配和更新网址的单个单词,我们可以明确地做到这一点。 但表格中的单词长度可以是2或3或4 Max。然后匹配不起作用,我们需要匹配2个单词,例如网络协议和网络协议。
例如,如果我正在搜索协议词,那么有许多匹配,并且更新错误网址的机会会更多。
什么是最佳解决方案,是否有任何api可用于此?如果我们也可以提高效率。
答案 0 :(得分:1)
str
str.replaceAll(phraseFromDB, "<a href='" + urlFromDB + "'>" + phraseFromDB + "</a>")
在一个循环中,基于在DB表中找到的记录数。答案 1 :(得分:1)
这是我想到的:
假设说;对于DB中任意数量的条目,以及任意长度的文本(读取:许多段落,甚至是页面),可以通过构建一个在DB中保存短语并在树结构上搜索来完成匹配。
例如,假设数据库包含以下短语:网络协议
网络协议
苹果和梨子网络精彩
Net is th shit
...
您的树将在顶层Network
,net
,apples
,Network
和net
持有子节点protocol
,{分别为{1}}和awesomeness
,protocol
....
我不确定这是不是你要找的东西,写这个只是因为你在面试中提到这是一个理论问题:)