2009-12-20 102 views
0

我正在嘗試爲我的網站製作詳細的搜索引擎。
正在多個字段和表中搜索關鍵字。例如,使用關鍵字:在哪個字段中找到關鍵字? SQL搜索

  • 烏魯達
  • 大學在我Members

這些關鍵字被搜索的educationaddresscontactnamecontactsurname領域。

我必須這樣做,因爲用戶只能有一個輸入字段。

一切都很好,直到在這裏,我想要做的是向用戶顯示該關鍵字被發現在哪個字段?我想顯示一個名爲「Hits」的字段。

我正在使用SQL Server 2008和全文搜索。

您可以從xing高級搜索部分看到我想要做的示例。

回答

2

你會知道在哪個字段中找到它,因爲你知道你在哪個字段中搜索過。如果你不關心哪個字段包含值,然後使用多列語法:

SELECT ... 
FROM Members 
WHERE CONTAINS((education, address, contactname, contactsurname), 'uludag'); 

但是,如果你想在一個特定領域搜索,那麼你必須只指定你的場興趣:

SELECT... 
FROM Members 
WHERE CONTAINS(education, 'uludag'); 

你可以合併多個字段和unioning多個查詢保留原產領域:

SELECT 'education' as [field origin],... 
FROM Members 
WHERE CONTAINS(education, 'uludag') 
UNION ALL 
SELECT 'address', ... 
FROM Members 
WHERE CONTAINS(address, 'uludag') 
... 
UNION ALL 
SELECT 'contactsurname', ... 
FROM Members 
WHERE CONTAINS(contactsurname, 'uludag'); 

最後,你可以使用在各領域的第一種形式(搜索一次),然後檢查客戶端哪個字段包含搜索項。

+0

謝謝。現在工作。 – 2009-12-20 18:47:34