php,mysql搜索网站

时间:2010-11-29 23:59:57

标签: php mysql search search-engine

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

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

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

然而,看起来这种方法只能返回结果,具体取决于关键字的数量。文章中使用的关键字越多,它在结果页面上显示的越高。因此,关键字较少的文章可能与搜索更相关,但会在结果中放置较低。

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

4 个答案:

答案 0 :(得分:2)

我以相同的方式构建了一个搜索引擎,但我构建了一个交叉表,将每个单词链接到它出现的每个页面。在该表中,我还存储了单词出现在页面中与页面长度相关的次数。我计算了你是否喜欢,页面上单词的百分比是那个单词。 这样可以更轻松地将权重应用于搜索结果。 但不幸的是,很难确定页面在其他方面是否更具相关性。 Google会使用一些技巧,例如页面上两个关键字之间的距离。如果它们彼此接近,它们可能是相关的。如果页面中的关键字较高,则可能更重要,依此类推。

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

您可以尝试MySQL的FullText索引对您有任何帮助。它为您的页面编制索引,您可以使用MATCH查询,该MATCH返回每行的分数。我不确切知道那里使用了什么公式,但它看起来很聪明。

如果您的所有网页都是公开的,您可能需要考虑使用Google自定义搜索等。它会为你节省很多时间。

答案 1 :(得分:1)

正如其他人所建议的那样,不要自己动手; SQL不适合搜索。我们使用Solr PHP客户端库基于Solr的系统。你将获得更好的性能,支持更强大的布尔查询(例如,这个和那个AND(这个或那个)等),通过Tika等在文档中搜索(例如pdf,word,xls等)。

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

答案 2 :(得分:0)

不要浪费你的时间,去谷歌自定义搜索http://www.google.com/cse/

答案 3 :(得分:0)

I Second El Yobo,如果你想要一个完整的搜索引擎,你会有更好的运气与lucene客户,但如果你正在寻找一个快速的解决方案google cse是最好的。