【问题标题】:How is web browser search implemented?网络浏览器搜索是如何实现的?
【发布时间】:2011-04-12 03:41:31
【问题描述】:

我想在 Java 桌面应用程序中实现搜索和突出显示 html 文件中的 多个 短语,就像在 Web 浏览器中完成的那样,所以 html 标记 ( <>) 内的标签会被忽略,但像 <b> 这样的一些标签不会被忽略。例如,在...each <b>table</b> has name... 文本中搜索each table 时会突出显示,但在文本...has each</p><p> Table is... 中不会突出显示,因为<p> 标记会中断文本含义。
在网络浏览器中这是以某种方式实现的,我怎样才能实现这个实现?或者网上有什么资料吗?我尝试了谷歌,但没有成功:(

【问题讨论】:

    标签: java html browser full-text-search


    【解决方案1】:

    正如 Faisal 所说,浏览器仅在呈现的内容中进行搜索。为此,您需要在进行实际搜索之前删除 HTML 标签:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 我知道它的老问题,但您能否分享更多信息或示例,说明如何为未来的访问者使用它?
      【解决方案3】:

      这看起来很简单。

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

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

      【讨论】:

      • 所以您建议将 html 文本“拆分”为一些纯文本部分,然后在这些部分中应用搜索?还是我误会了你?
      【解决方案4】:

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

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

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

      【讨论】:

      • +1 感谢迄今为止最好的答案,但我想要一个算法在桌面应用程序中以某种方式做到这一点......我不相信没有人尝试过这个:)
      猜你喜欢
      • 1970-01-01
      • 2011-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-30
      • 2017-05-21
      • 2013-04-19
      相关资源
      最近更新 更多