2010-06-21 38 views
2

我想构建产品搜索引擎。为用户输入关键字搜索数据库表的最佳方式?

我正在考虑使用谷歌网站搜索,但真正搜索谷歌的网站索引。我不想搜索那个。我想在我的数据库中搜索特定的表格(所有字段,甚至是用户从不会看到的字段),以查找给定的关键字。

但我希望这个搜索尽可能健壮,我想知道是否有东西已经存在,我可以使用?如果不是最好的方式去做自己?

回答

6

您可以尝试使用MySQL的Sphinxfull-text search

这里还有一个来自IBM的使用PHP的tutorial

+0

狮身人面像在两端都非常快(索引和搜索)。绝对值得一看。 – Ariel 2010-06-21 21:52:12

+0

更何况'狮身人面像'也可以解决你的其他问题:http://stackoverflow.com/questions/3088433/sql-plural-singular-searches – 2010-06-21 21:57:19

+0

谢谢,我试图安装狮身人面像,但我想我太新手了linux用户知道我在做什么,几乎每一个步骤都给了我一些错误,我不知道它是什么意思或做什么。 – 2010-06-22 18:17:02

2

我首先关注MySQL全文搜索。看看这些链接:

下面是从第一个链接的一个片段:使用 MATCH进行

全文搜索() ...反对语法。 MATCH() 以逗号分隔的列表 命名要搜索的列AGAINST接受一个字符串搜索, 和一个可选的修饰符 指示 执行的搜索类型是。搜索字符串必须是 文字字符串,而不是变量或 列名称。有三种类型的 全文搜索:

+0

这只适用于MyISAM表... – Ariel 2010-06-21 21:51:23

+0

感谢您的信息,如果我找不到狮身人面像,我会使用它。 – 2010-06-23 13:10:15

1

SELECT * FROM表WHERE值REGEXP“搜索关键词”

允许您使用许多熟悉的搜索技巧,如+“”等

这是MySQL的本地函数。不需要使用转到新的语言或插件可能会更快,但也是额外的时间进行维护,故障排除等。

它可能比做一些疯狂的基于C++的混搭慢一点,但用户不'通常会注意到毫秒之差......

1

有一件你可能也想看看(如果你不打算利用狮身人面像),是stemming your keywords。它会使匹配关键字变得更容易一些(因为“干酪”和“干酪”最终会产生相同的词干),这使得您的关键字匹配更加灵活。

相关问题