我正打算打电话,我需要在一个列(字符串)中进行搜索,并计算该条目与提供的字符串有多少相同的单词。
我一直在研究LCS,但我并不适合我,因为我不需要匹配实际的子序列,但我需要找到(前4行),与所提供的字符串具有最多的单词,按任意顺序排列。
我已经扯下了一些伪代码,以帮助解释它的要点:
query[] = array of keywords
counter[] = map of rowid => counter
do {
keywords[] = (select tags from i´th row from db).explode(" ")
foreach(word in query[]) {
foreach(tag in keywords[]) {
if(word == tag) {
counter(rowid, count++)
}
}
}
i++
} while(i <= number_of_rows)
sorted_counter = sort_array_by_value(counter)
row1 = counter[0]
row2 = counter[1]
row3 = counter[2]
row4 = counter[3]
任何帮助将不胜感激。它可以是SQL或PHP,运行时并不是一个很重要的因素。
编辑:澄清