2011-06-10 237 views
0

任何人都可以告訴我如何使用php/mysql搜索引擎進行部分關鍵字搜索嗎?部分關鍵字搜索

例如,如果一個人搜索「不能得到足夠的」,我希望它返回包含關鍵字的搜索結果「黑眼豆豆得不到足夠」或關鍵詞「黑眼豆豆只是可以沒有足夠的「。

另外一個例子:如果我進入「橙汁」我希望它返回與關鍵字結果「橙汁味道不錯」

它非常像谷歌和YouTube搜索。

我正在使用的代碼是:http://tinypaste.com/eac6cf

回答

0

你所使用的搜索方法是少量的記錄中搜索的標準方法。例如,如果你只有大約一千條記錄,那就沒問題。

但是,如果您必須從數百萬條記錄中進行搜索,則不會使用此方法,因爲它會非常慢。

相反,你有兩個選擇。

  1. 分解您的搜索字段並構建您自己的索引,其中包含單個詞和對記錄位置的引用。然後只搜索您的索引並從主表中查找相應的記錄。

  2. 使用MySQL的全文搜索功能。這很容易實現,但有其自身的限制。這樣你就不必自己構建索引。

+0

如何使用與PHP/MySQL的MySQL的全文搜索搜索引擎。 – rimad 2011-06-10 04:16:51

+0

你有沒有試過閱讀這個話題? http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html – 2011-06-10 06:48:38

0

MySQL full-text search將在這裏幫助,但只用MyISAM表的工作和性能往往要經過排水時,您的數據集變得相當大。

在我工作的公司,我們將搜索查詢推送到Sphinx。像Craigslist,The Pirate Bay,Slashdot這樣的網站都使用它,所以它在生產中非常實用。

0

在MySQL中,您可以使用MyISAM類型表並簡單地定義文本字段(CHAR,VARCHAR或TEXT),然後創建FULLTEXT索引。只要記住文本字段的大小,允許的字符越多,索引的大小越大,並且要更新的字符越慢。

其他大型數據集選項將包括諸如Solr之類的東西,但除非您已經知道您的數據將有大量數據,否則您肯定可以從MySql開始,看看它是如何發展的。

大多數MySQL編輯器,包括用於phpMyAdmin的添加索引提供了一個圖形用戶界面,如果你這樣做手工的代碼看起來是這樣的:

CREATE TABLE IF NOT EXISTS `test2` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `name` text CHARACTER SET utf8 NOT NULL, 
    PRIMARY KEY (`id`), 
    FULLTEXT KEY `ft_name` (`name`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; 
+0

請參閱:http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html – ldg 2011-06-10 04:45:53