2010-06-21 65 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。它會使匹配關鍵字變得更容易一些(因爲「乾酪」和「乾酪」最終會產生相同的詞幹),這使得您的關鍵字匹配更加靈活。

相關問題