我有兩個表組成文章內容的全文索引用於搜索目的。其中一個表只是與某個單詞關聯的主鍵,而另一個表記錄其發生的文章及其在文檔中的位置。一個單詞可能會出現在具有不同位置的同一個文檔中多次,因此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