php,mysql搜索的网站

php,mysql搜索的网站,php,mysql,search,search-engine,Php,Mysql,Search,Search Engine,我需要一个网站,我正在建设搜索引擎。我决定尝试使用php和mysql。目前看来,可行的选择是创建三个表 一个用于单词,一个用于页面,一个用于参考表。然后,当我插入一篇新文章时,我会扫描文本,将单独的单词放在单词表中,并在第三个表格中引用这些单词 最后,当进行搜索时。脚本应该返回给定单词索引最多的页面 然而,这种方法似乎只能根据关键字的数量返回结果。一篇文章中使用的关键词越多,它在结果页面上的显示就越高。因此,关键字较少的文章可能与搜索更相关,但在结果中的位置较低 问题是,有没有更好的方法使用ph

我需要一个网站,我正在建设搜索引擎。我决定尝试使用php和mysql。目前看来,可行的选择是创建三个表

一个用于单词,一个用于页面,一个用于参考表。然后,当我插入一篇新文章时,我会扫描文本,将单独的单词放在单词表中,并在第三个表格中引用这些单词

最后,当进行搜索时。脚本应该返回给定单词索引最多的页面

然而,这种方法似乎只能根据关键字的数量返回结果。一篇文章中使用的关键词越多,它在结果页面上的显示就越高。因此,关键字较少的文章可能与搜索更相关,但在结果中的位置较低


问题是,有没有更好的方法使用php/mysql创建自定义搜索引擎?另外,如果您无法访问服务器来安装Sphinx之类的搜索引擎,那么解决此问题的最佳方法是什么?

我以几乎相同的方式构建了一个搜索引擎,但我构建了一个交叉表,将每个单词链接到它出现的每个页面。在该表中,我还存储了单词在页面中出现的次数与页面长度的关系。如果你愿意的话,我计算了页面上该单词的百分比。 这使得对搜索结果应用权重变得更容易。 但不幸的是,很难确定页面是否在其他方面更相关。谷歌使用了一些技巧,比如页面上两个关键字之间的距离。如果他们彼此接近,他们很可能是相关的。如果某个关键词在页面中的位置较高,则它可能更重要,依此类推

但同时,谷歌使用了一种完全不同的数据库结构,这种结构更适合此类查询。在MySQL中构建它可能很困难

如果MySQL的全文索引对您有帮助,您可以尝试一下。它为您的页面编制索引,您可以使用MATCH进行查询,MATCH为每一行返回一个分数。我不知道那里到底用了什么公式,但它似乎相当聪明


如果所有的页面都是公共的,你可能想考虑使用谷歌自定义搜索或类似的东西。这会为你节省很多时间。

正如其他人所建议的,不要自己滚;SQL不适合搜索。我们使用基于Solr的系统,使用Solr PHP客户端库。您将获得更好的性能,支持功能强大得多的布尔查询(例如,this AND that AND(this OR that)等),通过Tika在文档中搜索(例如,pdf、word、xls等)

如果你想抓取你自己的网站,你也可以看看nutch


我支持El Yobo,如果你想要一个成熟的搜索引擎,你在lucene客户端会有更好的运气,但是如果你正在寻找一个快速解决方案,google cse是最好的