以多文件搜索输入全文
我正在尝试使用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
,列出教育匹配关键字的人。
我希望我能解释得很好:)虽然对不起我的英语。
几点我不明白这会影响你的速度。
- 你真的需要一个完整的外连接吗?这是在杀你。看起来这些表是一对一的。在这种情况下,你不能让它成为内部连接吗?
-
你能不能传递到包含列列表,像这样:
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。
Sql Server无法进行前缀匹配,所以只有'keyword *'是有用的。另外:'消息7646,级别16,状态1,行7 全文谓词引用来自两个不同表或索引视图'mem'和'edu'的列是不允许的。 – 2013-09-14 16:12:35
也许尝试一个包含合并数据集的索引视图 - 您可以在其中添加全文索引而不是单个表,并且它可以进一步扩展到您需要的行数。当然,唯一的窍门就是空间...
顺便说一句,我不能使用联盟,因为成员和教育领域是不一样的。我还需要在Members表上的contact_address中进行搜索。 – 2009-12-21 08:35:47
你可能会发现这个问题的答案有用:http://*.com/questions/2063561/sql-server-full-text-search-create-one-computed-column。 – 2010-01-21 13:00:55