Merhaba, basit bir konuda fikir ve tecrübelerinize ihtiyacım var.


Klasik etiket(tag) sisteminde, basit gibi görünen bir arama işlemi yapıyorum


aradığım örnek kelime yat

örnek kelime sadece başta, ortada ve sonda geçebiliyor, örnek kelime boşluk içerebiliyor.("motor yat" gibi)



(kelime ortada ise ", kelime, " yani virgülboşlukkelimevirgülboşluk diye geçebiliyor)


tabloda satırlarında içerikleri şöyle;

yat, ara, bul, gel, getir
ara, bul, gel, yat, getir
ara, bul, gel, getir, yat

yatak, ara, bul, gel, getir
ara, bul, gel, yatak, getir
ara, bul, gel, getir, yatak

bayat, ara, bul, gel, getir
ara, bul, gel, bayat, getir
ara, bul, gel, getir, bayat
...şeklindeki satırlarda ben sadece yat kelimeleri olanları bulmalıyım,
yatak, bayat ları bulmamalıyım.


SELECT kelimelerkolonu 
FROM `tablo`
WHERE (
kelimelerkolonu LIKE 'yat'
OR kelimelerkolonu LIKE 'yat, %'
OR kelimelerkolonu LIKE '%, yat, %'
OR kelimelerkolonu LIKE '%, yat'
);
sorgusu ile istediğimi istediğim şekilde buluyorum satır sayısı epey fazla olduğu için bu sorgu ağır ama sağlam çalışıyor.

aynı sorguyu regexp ile buluyorum tabi bu yukarıdakine göre çok daha ağır çalışıyor.

Fulltext arama konusunda epey kafa yorduğum halde gördüğüm kadarıyla burada fulltext işime yaramıyor zaten bahsi geçen tablo çok sık güncellendiği için doğası gereği fulltext yarardan çok zarar getiriyor.

Geçici tablo açıp işi daha da uzun işlemlerle büyütmek de istemiyorum.


Etiket sistemini değiştirip, örneğin "_yat__ara__bul haydi__gel gel__getir_" gibi yaparsam tek aramada aranan kelime _yat_ diyerek bulabiliyorum, başında sonunda ortasında geçmesi sorunu kalktığından 4 yerine 1 like kullanıyorum ki bu en makul görünen çözüm fakat daha kolay bir yöntem olmalı.


Farklı bir yöntem ile de bu işin yapılabileceğini düşünüyorsanız lütfen fikrinizi yazın.