我有一个有大数据的数据库,我正在搜索体育主题的例子,我定义了与体育例子相关的关键字的子集。
“俱乐部”
“游乐场”
“专业性”
“扭转”
“目标”
搜索结果必须至少满足上述关键字的两个关键字。"club“和"playground”关键字足以说明这行与体育主题相关。我使用了这个查询
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')我还使用了:
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"' )但两者都太慢了
对于这种情况,最好的实践是什么?
发布于 2017-09-30 04:30:25
虽然我怀疑它会更快,但我很好奇你是否尝试过以下内容,以避免列出所有的组合。如果性能不是更差,我认为基于此添加/充电单词可能会更容易。
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
) bhttps://stackoverflow.com/questions/46495466
复制相似问题