2011-05-09 73 views
0

我正在嘗試編碼搜索網站數據庫的基本搜索引擎的相關功能。讓我們以Yelp爲例。 (直接鏈接到http://www.yelp.com/search?find_desc=chinese&ns=1&find_loc=New+York%2C+NYMySQL搜索結果 - 按相關性排序

問題1

他們如何確定 '最佳匹配'?我猜他們會搜索包含關鍵字的所有條目至少一次,然後按關鍵字出現在標題/標記/說明中的次數進行排序。

問題2

對於排序由「最高評級」和「大多數審查」,他們搜索分別包含關鍵字,然後排序平均評級和評論的數量所有條目。

問題3

我在CodeIgniter中使用MySQL和Active Records。比方說,我的表「產品」有列'ID,名稱,類別,標籤,說明'。

  • 我如何做一個查詢,返回與出現在這些列中的一個關鍵詞的所有行,並
  • 我怎麼算算關鍵字出現在MySQL的這些列之一的次數查詢。
+0

http://devzone.zend.com/article/1304條款使用複雜的順序做一個非常簡單的相關性搜索 – 2011-05-09 23:29:45

回答

2

根據相關性進行排序,特別是涉及關鍵字/文本的排序不是一項簡單的任務。當你對付真正的大數據集,像Yelp的,你需要像獅身人面像http://sphinxsearch.com/

獅身人面像和類似的搜索引擎專業化的全文搜索引擎將允許你進行排序(除其他事項外)基於關鍵字的數量的記錄,在充分匹配記錄

如果你的記錄是小的話,我想你可以逃脫通過它使用LIKE

+0

謝謝,我想我會看看獅身人面像等,當網站增長(希望!)。 如果我要使用LIKE,如何確定3列中特定關鍵字的出現次數? – Nyxynyx 2011-05-10 00:39:04

+0

我不認爲你可以找到發生的次數,但更像是否存在,看看這個,這應該給你一個粗略的想法如何工作http://www.sitepoint.com/forums/mysql -182/MySQL的階相關性366485.html – 2011-05-10 00:42:38