2015-11-01 63 views
-1

場景:我正在構建一個基於用戶搜索條件的程序員,設計師,商務人員等配對的Web應用程序。如何根據多個動態標準搜索數據庫?

如何根據搜索者輸入的標準返回最相關的搜索結果?

例如:尋找具有PHP,Angular,MySQL技能的程序員的商業用戶。

每個技術人員將是一個單獨的標籤(Tag1中= PHP,與Tag2 =角,標籤3 =的MySQL)等每一個「人」對象將被由該數據的不同組合。

有查詢數據庫,而不是在人表中的列各項技能,並有查詢運行基於所述技能的存在尋找一個更優雅的方式?

我想,而不是多列我還可以建立一個1:人,技能和含有該技能只返回結果之間一對多的關係。不過,我覺得這樣會返回更多的行。

一個更具體的例子是如何#1讓你來標記多個標籤問題......如何這些標記/搜索的問題,並存儲在數據庫中?

+0

關於你的最後一個問題:因爲標籤上的號碼,是有限的(5)它可能是一組固定的列或數組(既違反1NF,但並不像hamfull,因爲它似乎,如果它可以在代碼中處理) – wildplasser

回答

0

你沒有提及你正在使用哪個數據庫。如果你的數據庫很好地處理了基於數組的搜索(比如PostgreSQL),那麼爲了搜索性能的原因,這對於一組固定的列來說更可取。

現在你可能遇到的一個大問題是同義詞。如果有人搜索Postgres而不是PostgreSQL呢?

在我的項目之一,我們改變用途PostgreSQL的這樣的事情全文搜索。在這種情況下,你可以有一組單詞,它們變成了一個tsvector,並且有一組同義詞,你可以對拼寫,詞幹,同義詞等進行標準化。它是解決這個問題的一種方法,但需要一些額外的代碼(也可能是觸發器)。