首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用SQL Server全文检索时,我需要至少两个关键字的结果作为关键字的子集,如何实现?

使用SQL Server全文检索时,我需要至少两个关键字的结果作为关键字的子集,如何实现?
EN

Stack Overflow用户
提问于 2017-09-30 03:07:00
回答 1查看 39关注 0票数 0

我有一个有大数据的数据库,我正在搜索体育主题的例子,我定义了与体育例子相关的关键字的子集。

“俱乐部”

“游乐场”

“专业性”

“扭转”

“目标”

搜索结果必须至少满足上述关键字的两个关键字。"club“和"playground”关键字足以说明这行与体育主题相关。我使用了这个查询

代码语言:javascript
复制
select  count(*) from datatable 
where contains (body,'("club" And "Playground") 
       or ("club" and "professionalism") 
       or ("club" and "torsion")  
       or ("club" and "goal") or .... or all probablities')

我还使用了:

代码语言:javascript
复制
 select  count(*) 
 from datatable 
 where 
  contains (body,'"Playground" OR "professionalism" OR "torsion" OR "goal"')
   And contains(body,'"club"  OR "professionalism" OR "torsion" OR "goal"') 
   And contains(body,'"club" OR "Playground" OR "torsion" OR "goal"') 
   And contains(body,'"club" OR "Playground" OR "professionalism" OR "goal"') 
   And contains(body,'"club" OR "Playground" OR "professionalism" OR "torsion"' )

但两者都太慢了

对于这种情况,最好的实践是什么?

EN

回答 1

Stack Overflow用户

发布于 2017-09-30 04:30:25

虽然我怀疑它会更快,但我很好奇你是否尝试过以下内容,以避免列出所有的组合。如果性能不是更差,我认为基于此添加/充电单词可能会更容易。

代码语言:javascript
复制
SELECT COUNT(*)
FROM
(
 SELECT datatable_pkey
 FROM
 (
   SELECT datatable_pkey
   FROM datatable
   WHERE contains (body, '"club"')
  UNION ALL
   SELECT datatable_pkey
   FROM datatable
   WHERE contains (body, '"Playground"')
  UNION ALL
   SELECT datatable_pkey
   FROM datatable
   WHERE contains (body, '"professionalism"')
  UNION ALL
   SELECT datatable_pkey
   FROM datatable
   WHERE contains (body, '"torsion"')
  UNION ALL
   SELECT datatable_pkey
   FROM datatable
   WHERE contains (body, '"goal"')
 ) a
 GROUP BY datatable_pkey
 HAVING COUNT(*) > 1
) b
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46495466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档