Это может быть не идеально, но одна возможность состоит в том, чтобы разбить обе строки на слова, вы можете применить similar_text
к каждому набору слов из $string2
такого же размера, как $string1
.
$needle_word_count = count(preg_split('/\W+/', $string1));
$haystack_words = preg_split('/\W+/', $string2);
$n = count($haystack_words) - $needle_word_count;
for ($i = 0; $i <= $n; $i++) {
$words = array_slice($haystack_words, $i, $needle_word_count);
$substring = implode(' ', $words);
$results[$substring] = similar_text($substring, $string1);
}
arsort($results);
/* $results:
array (size=17)
'adipisicing elit' => int 11
'consectetur adipisicing' => int 8
'sit amet' => int 5
'labore et' => int 5
'eiusmod tempor' => int 4
'dolor sit' => int 4
'ipsum dolor' => int 4
'tempor incididunt' => int 4
'Lorem ipsum' => int 3
'incididunt ut' => int 3
'sed do' => int 3
'do eiusmod' => int 3
'elit sed' => int 3
'amet consectetur' => int 3
'dolore magna' => int 3
'et dolore' => int 2
'ut labore' => int 1
*/
Форум MySQL помог мне !!!
mysql> set @my_var=0;
mysql> select frq, @my_var:=@my_var+frq as commutative_sum from `mytable`
Это хорошо работает с моими подпрограммами mysql.
ИМХО, это должно обрабатываться программной логикой, а не SQL. Если вы все еще хотите ...:
SELECT a.frq, sum(b.frq)
FROM table a
JOIN table b ON a.id >= b.id
GROUP BY a.frq