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.