任何人都可以告訴我如何使用php/mysql搜索引擎進行部分關鍵字搜索嗎?部分關鍵字搜索
例如,如果一個人搜索「不能得到足夠的」,我希望它返回包含關鍵字的搜索結果「黑眼豆豆得不到足夠」或關鍵詞「黑眼豆豆只是可以沒有足夠的「。
另外一個例子:如果我進入「橙汁」我希望它返回與關鍵字結果「橙汁味道不錯」
它非常像谷歌和YouTube搜索。
我正在使用的代碼是:http://tinypaste.com/eac6cf
任何人都可以告訴我如何使用php/mysql搜索引擎進行部分關鍵字搜索嗎?部分關鍵字搜索
例如,如果一個人搜索「不能得到足夠的」,我希望它返回包含關鍵字的搜索結果「黑眼豆豆得不到足夠」或關鍵詞「黑眼豆豆只是可以沒有足夠的「。
另外一個例子:如果我進入「橙汁」我希望它返回與關鍵字結果「橙汁味道不錯」
它非常像谷歌和YouTube搜索。
我正在使用的代碼是:http://tinypaste.com/eac6cf
你所使用的搜索方法是少量的記錄中搜索的標準方法。例如,如果你只有大約一千條記錄,那就沒問題。
但是,如果您必須從數百萬條記錄中進行搜索,則不會使用此方法,因爲它會非常慢。
相反,你有兩個選擇。
分解您的搜索字段並構建您自己的索引,其中包含單個詞和對記錄位置的引用。然後只搜索您的索引並從主表中查找相應的記錄。
使用MySQL的全文搜索功能。這很容易實現,但有其自身的限制。這樣你就不必自己構建索引。
MySQL full-text search將在這裏幫助,但只用MyISAM表的工作和性能往往要經過排水時,您的數據集變得相當大。
在我工作的公司,我們將搜索查詢推送到Sphinx。像Craigslist,The Pirate Bay,Slashdot這樣的網站都使用它,所以它在生產中非常實用。
在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 ;
請參閱:http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html – ldg 2011-06-10 04:45:53
如何使用與PHP/MySQL的MySQL的全文搜索搜索引擎。 – rimad 2011-06-10 04:16:51
你有沒有試過閱讀這個話題? http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html – 2011-06-10 06:48:38