[英]Search in multiple tables with Full-Text
我正在嘗試使用 asp 和 SQL Server 全文進行詳細搜索。
當一個關鍵字提交時,我需要在多個表中搜索。 例如,
表 -成員
member_id
contact_name
表 -教育
member_id
school_name
我的查詢;
select mem.member_id, mem.contact_name, edu.member_id, edu.school_name from Members mem FULL OUTER JOIN Education edu on edu.member_id=mem.member_id where CONTAINS (mem.contact_name, '""*"&keyword&"*""') or CONTAINS (edu.school_name, '""*"&keyword&"*""') order by mem.member_id desc;
此查詢有效,但執行需要很長時間。
關鍵詞是菲爾的形象; 如果mem.contact_name
匹配,則列出它,或者如果edu.school_name matches
,則列出其教育與關鍵字匹配的那些。
我希望我能解釋得很好 :) 對不起,我的英語。
也許嘗試包含合並數據集的索引視圖 - 您可以在那里添加全文索引而不是單個表,並且它可以進一步擴展到您需要的任意數量的表。 當然,唯一的技巧是空間......
這就是我為我的多表全文搜索所做的。
不准確,但它會給出基本的想法。 關鍵是給台虎鉗包含 OR 條件。
DECLARE @SearchTerm NVARCHAR(250)
SET @SearchTerm = '"Texas*"'
SELECT * FROM table1
JOIN table2 on table1.Id = table2.FKID
WHERE (
(@SearchTerm = '""') OR
CONTAINS((table1.column1, table1.column2, table1.column3), @SearchTerm) OR
CONTAINS((table2.column1, table2.column2), @SearchTerm)
)
有幾點我不明白,這會影響你的速度。
您不能像這樣將列列表傳遞給包含:
SELECT mem.member_id, mem.contact_name, edu.member_id, edu.school_name FROM members mem INNER JOIN education edu ON edu.member_id = mem.member_id WHERE Contains((mem.contact_name,edu.school_name),'*keyword*') ORDER BY mem.member_id DESC
有關contains 的更多信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.