2009-07-29 38 views
2

對於一個城市,我有一個位置搜索website,我們開始收集城市中所有可能類別的數據,如學校,學院,部門商店等,並將其信息存儲在單獨的表,因爲每個條目除了名稱,地址和電話號碼之外都有不同的細節。將搜索整合到後端爲MYSQL的網站上

我們必須在網站中集成搜索功能,以便人們能夠找到信息,所以我們建立了一個索引表,在這裏我們存儲了相同類別的類別和相關關鍵字以及如果搜索到了該類別對於。之後,我們添加了在名稱和地址上搜索的功能,以及將包含所有表中的這些字段的另一個主表添加到一個位置。現在我的疑問是以下

  • 應用程序的設計是不正確的,我們已經寫的選擇查詢*從母版,其中的名稱,如「%$輸入%」,一切都過去了,因爲我們的數據庫是MySQL和PHP的服務器端,有沒有對我改進系統設計的建議?
  • 人們想要更多的功能,如拆分關鍵字並根據相關性對其進行排名等,有沒有現成的框架可用於在數據庫上運行搜索。
  • 我試過在MYSQL中使用全文搜索,它似乎對我有效,那就夠了嗎?

糾正我,如果我錯了,我看了一下Lucene和谷歌自定義搜索,他們不工作通過抓取現有的網頁和建立自己的索引做索引?我有一個MySQL數據庫上的表的集合,我必須申請搜索。我有什麼選擇?

回答

3

爲了解決你的觀點:

  1. 使用%輸入%是很差。這將導致全表掃描每個查詢。在任何負載量或甚至遠程大型數據集下,您的數據庫服務器都會窒息。

  2. RDBMS本身並不是一個很好的解決方案。您正在尋找一個單獨的解決方案來尋找合適的地方。可以與你的RDBMS良好溝通的東西很好;在RDBMS中運行的東西不會滿足您的需求。

  3. MySQL中的全文搜索可用於非常基本的關鍵字搜索,僅此而已。有用的範圍非常有限 - 您需要一個高度可預測的使用模型來利用內置搜索。它被稱爲「搜索」,但並不像大多數人所想的那樣進行搜索。與我們期待Google和Bing搜索結果的質量相比,它沒有比較。在「搜索」這個詞的意義上,它就是其他的東西 - 比如Notepad vs Word。他們都是要輸入的東西,但這就是它。

就處理搜索的單獨系統而言,Lucene非常好。基本上,Lucene可以工作,但你希望它工作。您可以以編程方式與它交互以插入可索引文檔。同樣,可以給Google Appliance(而不是Google Custom Search)直接提供元數據源,這些元數據源可以公開您希望被索引的任何內容,例如直接來自數據庫的數據。

+0

我該如何讓lucene在數據庫上工作? – 2009-07-29 04:37:24

2

看看斯芬克斯:http://www.sphinxsearch.com/

每他們的網站:

如何實現爲10+百萬行的表的全文搜索,跟上負載,並保持相關性?獅身人面像擅長這些謎語。

它現在是有很多的人在Rails社區很受歡迎,他們都狂歡它是如何真棒:)