我会尽力给你我的意见,我很高兴在评论中得到建设性的反馈。
首先你是在讲一个非常软的论点,你可能不喜欢我的观点,以下点被标记为回答你的问题
1) 是和否。是的,因为您可以对存储在 html 代码中的关键字进行智能搜索,但您不知道要浏览多少页。此外,您的内容可能会动态变化,并且关键字可能毫无用处。最后一部分介绍 No 部分。不,因为您需要一种了解页面内容的方法,例如 stackoverflow 中的问题都标有标签。我猜它们存储在某个地方。
2)你从用户那里得到一个世界,你应该在你自己的网站上运行一个“网络蜘蛛”来知道这个世界发生在哪里。打开你拥有的所有页面、搜索它、过滤它需要时间,最终如果你编写了足够好的代码,你可以在几秒钟内解析一个页面,比如 map-reduce 算法之类的好方法。编辑:这点很清楚。您不知道用户将提示什么样的字符串或输入(从现在起称为X )。这表示您将其存储在某个地方并开始搜索:
您编写了一个脚本来检查您网站中的所有页面。这是一个非常糟糕的主意。请继续考虑stackoverflow的例子:你怎么知道你有多少页?你有固定数量的页面(静态)吗?或者您的内容会发生动态变化(例如stackoverflow中的文本和页数)?为此,您必须运行“算法”来打开所有页面并查找内容。您可以查找特定类型的内容,因为您可以使用 html 页面的关键字标签来限制您的研究。如果x是在您为单个页面完成的关键字中,您必须循环搜索,直到您控制了所有网页。在记忆中浪费时间和空间。假设打开一个到您的网页的套接字的时间恒定,假设您有 n 个页面,其中包含 m 个关键字,假设x包含 l 个单词:这大约需要 O(n*m*l)。(不考虑您可能想分析整个页面的事实)
如果您有很多资源,您可以使用 map-reduce 模型编写此“算法”(请参阅此处对map-reduce进行了很好的解释)。
相反,如果您使用标签系统之类的东西,将标签简单地映射到页面,并将它们保存到一个简单的表中(在简单的情况下为 3 列:ID TAG PAGE),您可以允许在您的数据库上快速搜索,查看x的标签列似乎要快得多。
3)这个问题并没有敲响任何警钟,而是:你将如何处理 xml?你想放在哪里?你的页面是 xml 格式的吗?你想保存 xml 搜索结果吗?
4)我认为谷歌已经提供了类似的东西。无论如何,一个好方法是打开每个页面,根据页面读取 xml/html,然后运行正则表达式来匹配您的单词。
5)这两个链接是不言自明的,在答案中你真的找到了你需要的东西。
6)没有线索。
7)没有。但是你应该很难定义。你会花很长时间去思考,并为它找到合适的设计,然后你会决定 lucene 是否适合你,是否要使用 sql,或者其他什么。