我正在尝试使用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;
此查询有效,但执行时间很长。
关键字为Phill的图片;如果mem.contact_name
匹配,则列出它,或者如果edu.school_name matches
,则列出其教育与关键字匹配的那些。
我希望我能解释清楚:)对不起我的英语。
答案 0 :(得分:1)
也许尝试一个包含合并数据集的索引视图 - 您可以在那里添加全文索引而不是单个表,并且它可以进一步扩展到您需要的那么多表。当然,只有技巧才是空间......
答案 1 :(得分:0)
我不明白的一些观点会影响你的速度。
无法将列列表传递给包含如下:
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的详细信息。
答案 2 :(得分:0)
这就是我要进行多表全文本搜索的方式。
不太精确,但是会给出基本的想法。关键是给台钳包含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)
)