我有一個列出人員及其所有聯繫信息的表格。我希望用戶能夠在桌面上執行智能搜索,只需鍵入一些內容並獲取結果,即輸入的每個術語至少與表格中的一列匹配。要開始我做了一個查詢像如何搜索多個表格列中的多個術語?
SELECT * FROM contacts WHERE
firstname LIKE '%Bob%'
OR lastname LIKE '%Bob%'
OR phone LIKE '%Bob%' OR
...
但現在我意識到,這將完全作爲「鮑勃·詹金斯」這樣簡單的事情會失敗,因爲它不是足夠聰明,分別搜索第一的姓氏。我需要做的是將搜索項分開並單獨搜索它們,然後以某種方式將每個術語的結果相交。至少這對我來說似乎是解決方案。但是最好的方法是什麼?
我聽說過全文和MATCH()... AGAINST(),但這聽起來像一個相當模糊的搜索,我不知道要設置多少工作。我希望得到具有合理表現的確切結果或不結果。搜索需要在20行至120,000行左右完成。希望用戶不會輸入兩個或三個以上的術語。
對不起,我忘了提及我正在使用MySQL(和PHP)。
我只是想出了全文搜索,這是一個很酷的選擇(有沒有一種方法可以調整它的嚴格程度?LIMIT只會截斷結果,無論它的匹配程度如何)。但是這需要一個全文索引,而我的網站正在使用一個視圖,你不能將視圖編入索引?所以...
你使用了什麼數據庫?每個提供不同的功能和功能,所以它將有助於瞭解。 – Oded 2010-07-06 05:48:55