işte bende diyorum ki ilk önce 6 kelimede ortak olan yazıları listelet
select * from tablo where yazi LIKE '%kelime1%' and yazi LIKE '%kelime2%' and yazi LIKE '%kelime3%' and yazi LIKE '%kelime4%' and yazi LIKE '%kelime5%' and yazi LIKE '%kelime6%'
bu sorgu ile en çok benzer yazılar çıkacakya

boş olma olsılığıda çok yüksek bunun için de diyorum ki bu sorgudan sonra
select * from tablo where yazi LIKE '%kelime1%' and yazi LIKE '%kelime2%' and yazi LIKE '%kelime3%' and yazi LIKE '%kelime4%' and yazi LIKE '%kelime5%'
5 kelime için yeniden ara deniyeceksin senin cümlende 6 kelime olduğu için 6 kere kelimeler için ayrı ayrı çalıştırıp çıkanı ilk sorguda bulunanların altına ekliyeceksin.
bu şekilde yani 2. sorgu 6 sorgu olacak yani.
kelime1 +kelime2 +kelime3 +kelime4 +kelime5
kelime1 +kelime2 +kelime3 +kelime4 +kelime6
kelime1 +kelime2 +kelime3 +kelime5 +kelime6
kelime1 +kelime2 +kelime4 +kelime5 +kelime6
kelime1 +kelime3 +kelime4 +kelime5 +kelime6
kelime2 +kelime3 +kelime4 +kelime5 +kelime6
bu şekildede benzer kelimeler çok az olacağı için bunu 4 kelimeliler için denemek lazım
kelime1 +kelime2 +kelime3 +kelime4
kelime1 +kelime2 +kelime3 +kelime6
kelime1 +kelime2 +kelime3 +kelime5
kelime1 +kelime2 +kelime4 +kelime5
kelime1 +kelime2 +kelime4 +kelime6
kelime1 +kelime2 +kelime3 +kelime4 diye uzayıp gidiyor

işte bunu yapabilecek bir fonksiyon oluşturmak lazım. bu 4 kelime benzerlerinden sonuç çıkma olasılığı olabilir.
bende bu kodu denedim ve gayet güzel çalışıyor sadece iki sonuç çıktı sanırım sen bi yerde yalnışlık yapıyorsun yada kelimeleri tek tek aratıyorsun tek tek değilde grup grup aratırsan az ve benzer sonuçlar çıkar.
Denedim çalışıyor.
PHP:
select * from tablom where alan LIKE '%kelime%' and alan LIKE '%kelime2%'