2010-03-23 44 views
0

正在查找將執行頻率排名的查詢,以便在結果中列出具有提供的「關鍵詞」的最大發生的記錄。什麼是執行頻率排名的mysql查詢

我在表中的字段是文本和ID。 任何人都可以幫助我。 在此先感謝。

+0

確實需要更多信息。您的問題要求提供關鍵字的最大出現次數,但與名爲(text和id)的列有什麼關係。文本中是否包含「關鍵詞」? 「關鍵詞」是否等於文字?這是你的意思:「我想要一個按照」關鍵字「出現在文本列中的次數顯示記錄的查詢?」 – MJB 2010-03-23 13:25:04

+0

我的專欄「文本」只有一些文本數據,我必須在其中搜索給定的關鍵詞。你的問題是對的。 – kshama 2010-03-24 11:24:20

回答

0

這樣如何:將關鍵字替換爲空白,然後將新大小與舊大小進行比較。該差異除以關鍵字的長度,等於它被發現的次數。

select id, text, 
    (length(text)-length(replace(text, 'KEYWORD', '')))/length('KEYWORD') 
from TableName 
where text like '%KEYWORD%'; 

這似乎有點片狀給我,但因爲你正在嘗試做它與SQL我想不出返回的時間字符串被發現的數量SQL字符串比較功能。

+0

如果我正在尋找一個詞'酒吧'上述查詢將匹配'barred','barb',我不想要。實際上我使用rails爲我的應用程序,是否有更好的選擇在rails?任何建議將不勝感激。 – kshama 2010-03-24 13:25:50

+0

而不是隻看'KEYWORD',你可以尋找'KEYWORD'(也就是周圍有空格)嗎?你在看一系列文字,文字文件還是什麼?至於鐵軌答案,我無法幫到你。 – MJB 2010-03-24 16:47:29

+0

我的列文本是mysql類型的文本,它是一系列文本,對於少數情況可能會跨越1000個字或更多。 如果我使用'bar',那麼即使它在表格中,也沒有檢索到任何記錄。 我在一個mysql論壇發現另一個查詢,它是 SELECT id,text,MATCH(text)AGAINST('keyword')AS score FROM contents WHERE MATCH(text)AGAINST('keyword')INTO OUTFILE'/ tmp/bar1。文本'; 這個查詢適用於像hopsital這樣的其他關鍵字,但是對於它不給出任何記錄的bar,不知道是什麼原因。 – kshama 2010-03-25 12:13:29