如何实现Web浏览器搜索?

时间:2010-09-14 12:34:18

标签: java html browser full-text-search

我想在桌面应用程序中实现java搜索并在 html 文件中突出显示多个短语,就像在网络浏览器中一样,所以 html标签(在<>内被忽略,但某些标记(如<b>)不会被忽略。当搜索示例each table时,文本...each <b>table</b> has name...将突出显示,但在文本...has each</p><p> Table is...中,它将不会突出显示,因为<p>标记会中断文本含义。
在Web浏览器中,这是以某种方式实现的,我该如何实现此实现?或网上有一些来源?我试过谷歌,但没有成功:(

4 个答案:

答案 0 :(得分:2)

浏览器不是在实际的HTML文件中搜索,而是搜索该HTML的渲染输出。

获取合适的HTML渲染器并将其输出作为文本。然后使用适当的字符串搜索算法搜索该文本输出。

您在问题中突出显示的示例将在呈现的HTML输出中生成换行符,因此正常的字符串搜索算法将按预期运行。

答案 1 :(得分:1)

正如费萨尔所说,浏览器只搜索渲染内容。为此,您需要在进行实际搜索之前删除HTML标记:

此代码可能对您有所帮助: http://www.dotnetperls.com/remove-html-tags

当然,您需要添加一些检查/排除项,例如脚本标记和其他未呈现到浏览器中的内容。

答案 2 :(得分:0)

这看起来很简单。

1)搜索字符串中的最后一个单词。 2)看看最后一个字之前的内容。 3)确定最后一个单词之前的内容是否构成和中断(<p>, <br />, <div>)。 4)如果中断,continue 5)Else根据搜索查询评估上一个单词。

我不知道这是浏览器执行此操作的方式,但这种方法应该有效。

答案 3 :(得分:0)

尝试在java中使用javax.swing.text.html包。