• 21-10-2020, 20:33:16
    #1
    Gelişmiş bir içerik sitesinde arama bölümü yapıyorum ama sorunlar var.
    Örneğin; İçinde tenis kelimesi geçen bir konum var. Bunu tenis diye aratınca bulabiliyorum. Ama tenis oynayan diye aratınca gelmiyor %words%
    Bende bu sorunu çözmek için kelimeleri array' e alıp arattım ve çözdüm. Ama diğer bir sorunum var onu çözemiyorum.
    Bu arama motorunun biraz kuvvetli olması gerekiyor. Yani içinde İşçi hakları geçen bir konum var. Ama bunu isci haklari diye aratınca sonuç dönmüyor.
    Bu neden lazım olsun ki düşünürdüm eskiden olsa ama şu an çalıştığım ofiste Türkçe klavye yok maclerde mesela. Böyle binlerce insan var ülkemizde.
    Smiliar search yapabileceğim bir kod var mı? Yada tüm bu isteklerimi karşılayabilecek bir arama şekli. Yani array' e almama gerek kalmadan, hemde benzer search eden bir kod var mıdır?
  • 21-10-2020, 20:35:41
    #2
    Elastic search baktınız mı
  • 21-10-2020, 20:40:32
    #3
    mertkilic0111 adlı üyeden alıntı: mesajı görüntüle
    Elastic search baktınız mı
    Yok bakmadım.
  • 21-10-2020, 20:41:38
    #4
    Veri tabanında aramaya gitmeden önce iki yapı kurarsınız. Kullanıcının normal metin kutusuna yazdığı kelimeyi like %arama% formatında arattıktan sonra sözcük bulunamazsa girilen kelimeyi TR formattan globale çıkartıp tekrar sorgulatırsınız. Yani 2 şekilde kontrol sağlanmış olur.

    Örnek Dönüşüm :
    Public Function Ceng(ByVal _String As String) As String
    Dim Source As String = "ığüşöçĞÜŞİÖÇ"
    Dim Destination As String = "igusocGUSIOC"
    For i As Integer = 0 To Source.Length - 1
    _String = _String.Replace(Source(i), Destination(i))
    Next
    Return _String
    End Function
  • 21-10-2020, 20:42:38
    #5
    SELECT TRANSLATE(string, ‘ĞÜŞİÖÇğüşıöç’, ‘GUSIOCgusioc’) FROM tabloadi;

    Yukarıdaki gibi bir sorgu kurup where ve like sorgunuzu yazarsananiz,yapmaya calistiginiz islemi yapabilirsiniz. Yukaridaki kod veritabanindan gelen degerlerdeki karakterleri ingilizce karakterlere cevirip aramanizi yapmaktadir. Sizde like icinde kullandiginiz %arama% sözcüğünu textboxa girilen kelimeyi ingilizce karakterlere cevirirseniz sorununuzu asmis olucaksiniz
  • 21-10-2020, 20:44:00
    #6
    DreaMYs adlı üyeden alıntı: mesajı görüntüle
    Yok bakmadım.
    Elastic search ile eş anlamlı kelimeleri de bulabilirsiniz ve düz arama fonksiyonlarına göre big datalarda daha hızlı çalışıyor benim kanaatim
  • 21-10-2020, 20:49:09
    #7
    mertkilic0111 adlı üyeden alıntı: mesajı görüntüle
    Elastic search ile eş anlamlı kelimeleri de bulabilirsiniz ve düz arama fonksiyonlarına göre big datalarda daha hızlı çalışıyor benim kanaatim
    Biraz inceledim ama sql örneğini göremedim.
  • 21-10-2020, 20:56:02
    #8
    cinarenis adlı üyeden alıntı: mesajı görüntüle
    SELECT TRANSLATE(string, ‘ĞÜŞİÖÇğüşıöç’, ‘GUSIOCgusioc’) FROM tabloadi;

    Yukarıdaki gibi bir sorgu kurup where ve like sorgunuzu yazarsananiz,yapmaya calistiginiz islemi yapabilirsiniz. Yukaridaki kod veritabanindan gelen degerlerdeki karakterleri ingilizce karakterlere cevirip aramanizi yapmaktadir. Sizde like icinde kullandiginiz %arama% sözcüğünu textboxa girilen kelimeyi ingilizce karakterlere cevirirseniz sorununuzu asmis olucaksiniz
    #1305 - FUNCTION **.TRANSLATE does not exist

    Bu sanırım mysql de yok.
  • 21-10-2020, 21:15:53
    #9
    DreaMYs adlı üyeden alıntı: mesajı görüntüle
    #1305 - FUNCTION **.TRANSLATE does not exist

    Bu sanırım mysql de yok.
    Onun mysql deki karşılığı REPLACE dir hocam doğru dediniz. Aşağıdaki örneğe göre yazabilirsiniz
    SELECT blog_baslik,blog_aciklama, REPLACE(blog_baslik,'çişöğ','cisog') FROM blog