我有一个带有关于电影的推文的蜂巢表和一个关键字映射到电影标题的表
关键字示例:
title keyword
------ -------
3 Days to Kill 3daystokill
3 Days to Kill 3 days to kill
12 Years a Slave 12YearsASlave
推文示例:
id text
------ -------
125675146 3daystokill sucks!
125673498 3 days to kill is awesome!
239873985 I like 12 Years a Slave :)
我希望能够找到与特定电影标题的关键字匹配的推文。例如,我想查找所有提及3天杀死关键字的推文(3daystokill和3天杀死)。
我认为这样的事情,但结果是空的:(
SELECT k.keyword, t.text
FROM keywords k JOIN tweets t
ON t.text = CONCAT('%',k.keyword,'%')
WHERE k.title = "3 Days to Kill";
答案 0 :(得分:4)
您正在寻找like
,而不是=
:
SELECT k.keyword, t.text
FROM keywords k JOIN
tweets t
ON t.text like CONCAT('%', k.keyword, '%')
WHERE k.title = '3 Days to Kill';
编辑:
我不知道HiveQL在开头或结尾只将like
限制为通配符。一个选项是rlike
。另一个是instr()
:
SELECT k.keyword, t.text
FROM keywords k JOIN
tweets t
ON instr(t.text, k.keyword) > 0
WHERE k.title = '3 Days to Kill';
答案 1 :(得分:0)
我不确定以下是否有帮助.. :(但刚试了一下。
select case when
replace(keyword,' ',null) = '3daystokill'
then keyword
end
from keywords
答案 2 :(得分:0)
您可以使用Hive StatisticsAndDataMining功能context_ngrams()
SelectedTabPageIndex