2017-03-21 116 views
-1

我正在實現REST API的搜索功能,這是我第一次處理大型數據庫搜索。使用支持表進行FULLTEXT搜索的數據庫搜索

我的MySQL位置表有以下幾列

| id | name | email | phone | postcode | address | verified |

用戶可以通過name, email, phone, postcode or address搜索位置。

輸入搜索字符串不會分隔不同的字段,即只有一個輸入文本框,並且該字符串與上面的每個可搜索字段匹配(這是故意要的)。

我到目前爲止一直在做的事情是採取輸入字符串並運行匹配...針對每個可搜索列的查詢,合併結果並返回。

但是,我不會創建一個支持索引表(location_query),它有兩列。

| location_id | match_query |

,當一個位置加入,我可以添加一個新行到具有類似

0 | {NAME} {EMAIL} {PHONE} {POSTCODE} {ADDRESS}

,然後只需運行在match_query列一個全文檢索的值location_query?

請問這項工作?

回答

0

您尚未提供有關您的性能要求,數據量和當前用戶負載的任何詳細信息,但我建議使用搜索引擎(例如Apache Solr)而不是RDBMS。 這允許對索引和搜索策略進行細粒度控制並獲得更好的性能。

+0

嗨,謝謝你的回答。目前我沒有任何具體的性能要求,現在只是嘲笑數據,這不是一個專業的應用程序,而是一個學習項目,這意味着用戶負載也沒有。我主要試圖瞄準可擴展性。我不知道數據庫搜索引擎,並會開始研究它們。 非常感謝 – WiserTheBassist

+0

@WiserTheBassist,您可以從Apache Solr開始,它對於具有描述性文檔和社區的初學者來說穩定而且非常友好。 –

+0

是的,我一直在研究它,但是我在一個共享主機計劃和限於cPanel,所以我不相信我可以安裝Apache Solr或任何其他數據庫搜索引擎。 – WiserTheBassist