我有两个表组成文章内容的全文索引用于搜索目的。其中一个表只是与某个单词关联的主键,而另一个表记录其发生的文章及其在文档中的位置。一个单词可能会出现在具有不同位置的同一个文档中多次,因此word_locations表中可能出现多次相同的单词ID。从一个表与另一个ID的MySQL连接计数
这里有结构:
话:
id bigint
word tinytext
word_location:
id bigint(20)
wordid bigint(20)
location int(11)
article_id int(11)
什么,我需要写的是,会发现出现的次数为每个单词的查询任何一个档案。我需要为没有出现的wordid保留一个零值,所以我认为这需要是一个左连接。但是,每当我尝试添加where查询来限制文章时,结果集中都不包含任何完全不出现的wordid。
我曾尝试:
select words.wordid, COUNT(word_location.wordid) as appears from words left join word_location on word.id = word_location.wordid where article_id = %s GROUP BY wordid
但此查询不为不显示在所有单词返回零。
如何修改此左连接?
在此先感谢!
EDIT:
下面是一个例子数据集和所述结果集的不同的查询。
实例文章内容:
Bob的餐厅是最好的餐厅更 县在这里您可以享受最好的土耳其美食之一。
所以词汇表,由应用程序,以排除停止字的调整之后,将在其词汇量为行Bob
,Restaurant
,finest
,greater
,county
,enjoy
,Turkish
和cusine
。 (我使用这个实际的文章,因为它是在集中的第一,所以IDS实际出现的整数1开始
由@马克·班尼斯特提供的查询会产生这样的结果集: 的wordID - 词 - 匹配的字符串
128 clifton 0
1 bob's 2
2 restaurant 2
3 one 1
4 finest 3
5 restaurants 2
6 greater 1
9 county 1
12 enjoy 3
13 turkish 6
14 cuisine 1
结果集本身是正确的 - 但id 128没有出现在文档中,并且是结果集中出现0的唯一结果。目标是让整个词汇表以数字返回(大约2500个不同的单词)
我原来的问题上述编辑之前的查询实际上返回了相同的结果集,但根本没有任何0个发生行。
我想我明白你的意思,但这个查询似乎只产生一个零数量的结果,而我似乎无法确定为什么那个特定的返回。除此之外,结果集的其余部分与原始错误查询相同。谢谢! – DeaconDesperado
@DeaconDesperado,你可以在你的问题中包含一些示例数据吗? –
当然 - 两个不同查询返回的一般数据或结果集的示例? – DeaconDesperado