我想构建产品搜索引擎。为用户输入关键字搜索数据库表的最佳方式?
我正在考虑使用谷歌网站搜索,但真正搜索谷歌的网站索引。我不想搜索那个。我想在我的数据库中搜索特定的表格(所有字段,甚至是用户从不会看到的字段),以查找给定的关键字。
但我希望这个搜索尽可能健壮,我想知道是否有东西已经存在,我可以使用?如果不是最好的方式去做自己?
我想构建产品搜索引擎。为用户输入关键字搜索数据库表的最佳方式?
我正在考虑使用谷歌网站搜索,但真正搜索谷歌的网站索引。我不想搜索那个。我想在我的数据库中搜索特定的表格(所有字段,甚至是用户从不会看到的字段),以查找给定的关键字。
但我希望这个搜索尽可能健壮,我想知道是否有东西已经存在,我可以使用?如果不是最好的方式去做自己?
至于东西,这已经在那里,看看这些:
我首先关注MySQL全文搜索。看看这些链接:
下面是从第一个链接的一个片段:使用 MATCH进行
全文搜索() ...反对语法。 MATCH() 以逗号分隔的列表 命名要搜索的列。 AGAINST接受一个字符串搜索, 和一个可选的修饰符 指示 执行的搜索类型是。搜索字符串必须是 文字字符串,而不是变量或 列名称。有三种类型的 全文搜索:
这只适用于MyISAM表... – Ariel 2010-06-21 21:51:23
感谢您的信息,如果我找不到狮身人面像,我会使用它。 – 2010-06-23 13:10:15
SELECT * FROM表WHERE值REGEXP“搜索关键词”
允许您使用许多熟悉的搜索技巧,如+“”等
这是MySQL的本地函数。不需要使用转到新的语言或插件可能会更快,但也是额外的时间进行维护,故障排除等。
它可能比做一些疯狂的基于C++的混搭慢一点,但用户不'通常会注意到毫秒之差......
有一件你可能也想看看(如果你不打算利用狮身人面像),是stemming your keywords。它会使匹配关键字变得更容易一些(因为“干酪”和“干酪”最终会产生相同的词干),这使得您的关键字匹配更加灵活。
狮身人面像在两端都非常快(索引和搜索)。绝对值得一看。 – Ariel 2010-06-21 21:52:12
更何况'狮身人面像'也可以解决你的其他问题:http://stackoverflow.com/questions/3088433/sql-plural-singular-searches – 2010-06-21 21:57:19
谢谢,我试图安装狮身人面像,但我想我太新手了linux用户知道我在做什么,几乎每一个步骤都给了我一些错误,我不知道它是什么意思或做什么。 – 2010-06-22 18:17:02