我正在開發與API一個網站,可以從移動客戶端進行訪問,應用程序類似於http://zomato.com/優化數據庫的搜索算法
,假設我們已經表車(carID,型號,製造商,傳輸的東西, fuleType,otherOptions)
用戶可以查詢任何字段,查詢也可能包括其他表中的字段,例如,如果我爲製造商和模型創建w分開的表。
當然我可以在所有字段上使用like子句進行查詢,這是正確的方式嗎?何時可能有成千上萬的記錄?
使用移動應用程序或網站時,我需要快速數據庫響應實時查詢。
我對.NET最熟悉,但是如果你給我任何其他建議並引導我完成起點(庫,現有的開源項目),我會很高興。
注:用戶將只能有一個搜索欄和可選的過濾器一樣的模式,類別等..
是的,我知道這個技術用於查詢數據庫,但在我的情況下,你不知道他查詢哪個字段,所以我正在尋找更先進的東西。我想要一種方式來給API客戶端提供實時響應,例如,當他鍵入前三個字符時,就像搜索引擎一樣開始過濾,我不能使用它需要的文檔作爲數據庫。 –
對於自動完成類型的搜索框,您需要列出關鍵字。最好創建一個包含所有提交的關鍵字的表格,並且您可以使用一個通用規則來說明是否已經提交了一個關鍵字X多次將其添加到用於自動完成的關鍵字表格中。您還應該爲關鍵字實施白名單和黑名單。至於查詢你有什麼應該很好,在每個領域多個where語句。你最有可能要專注於查詢之外的數據庫優化,如索引,緩存等... –
我喜歡黑/白框的想法,那麼你的意思是我將向數據庫發出兩個請求(一個初始加載自動完成數據)另一個是獲得真實結果。我看到我想做的事情並不像我想的那麼複雜,但是既然你提到了NoSql,我以前沒有用過這個,我已經閱讀了一些關於該文章的文章,但無法確認它是否能滿足我的需求(有關係船舶之間的數據庫實體),我不想改變這個問題的主題。但不知道我是否要去關係數據庫,還是應該花更多的時間學習新技術(NoSql) –