2010-11-29 87 views
1

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

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

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

但是看起来这种方法只能根据关键字的数量返回结果。文章中使用的关键字越多,结果页面上出现的关键字越高。因此,关键字较少的文章可能与搜索更相关,但结果会更低。

问题是有没有更好的方法来创建一个使用PHP/MySQL的自定义搜索引擎?另外如果你没有访问服务器来安装像Sphinx这样的搜索引擎,解决这个问题的最好方法是什么?

回答

2

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

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

如果MySQL的FullText索引对你有帮助,你可以试试。它为你的页面建立索引,你可以使用MATCH查询,这会为每一行返回一个分数。我不知道在那里使用了什么公式,但它似乎很聪明。

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

0

我第二EL雅博,如果你要为你将与Lucene的客户更好的运气一个完全成熟的搜索引擎,但如果你正在寻找一个快速的解决方案谷歌自定义搜索引擎是最好的。