簡體   English   中英

使用全文在多個表中搜索

[英]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)
      )

有幾點我不明白,這會影響你的速度。

  1. 你真的需要一個完整的外連接嗎? 那是要殺了你。 看起來這些表是一對一的。 在這種情況下,您不能將其設為內部聯接嗎?
  2. 您不能像這樣將列列表傳遞給包含:

     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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM