2

我已经在讨论论坛数据库中实现了全文搜索,我想以 Google 的方式显示搜索结果。即使对于很长的 html 页面,搜索结果列表中也只会显示两三行文本。通常这些是包含搜索词的行。

如何根据文本本身和搜索词提取几行文本的好算法是什么。我可以想到一些简单的方法,比如在文本中出现搜索词之前使用一行文本,然后再使用一行——但这似乎太简单了,无法工作。

想得到一些方向,想法和见解。

谢谢你。

4

3 回答 3

2

如果您正在寻找比“前/后行”方法更高级的东西,总结器可能会解决问题。

这是一个基于朴素贝叶斯的系统: http ://classifier4j.sourceforge.net/

贝叶斯是许多垃圾邮件过滤器使用的统计系统——几年前我研究了贝叶斯摘要器,发现它们在摘要文本方面做得很好,只要有大量的文本需要处理。不过,我实际上并没有尝试过上面的库,所以你的里程可能会有所不同。

于 2009-06-05T06:27:48.310 回答
0

您是否尝试过代码中的“搜索词出现之前/之后的行”,以查看对于这种简单的编码投资,结果是否足以满足您的需求?可能已经够了?

否则,您可以选择句子片段:所以不要在行上拆分,而是在换行符、句号、逗号、分隔的连字符等上拆分。然后显示包含搜索词的片段。您可以用“...”或其他东西分隔每个匹配的句子。

如果你有很多这样的片段,你可以尝试对这些片段进行优先级排序,按优先级降序排列,只显示其中的第一个n。和/或将部分缩减为仅搜索词和搜索词周围的几个词。

只是一些非正式的想法可以让你开始吗?

于 2009-06-05T05:51:29.273 回答
0

专注于内容的开头。想想当你访问博客时你会看哪里。开头的段落告诉你文章的方向是否正确。所以在你的算法中反映这一点是有意义的。

检查标题(H1、H2 等)中搜索词的出现情况,并给予它们更高的优先级。

这应该让你开始。

于 2009-06-05T09:10:59.967 回答