Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Google Tarzı Arama
#1
Veritabanında google tarzı arama yapmak mümkün müdür? Örneğin 'Abdullah' ı ararken 'abullah' ya da 'aptullah' yazsak bile bulabilsin..
Cevapla
#2
(31-01-2017, Saat: 20:31)delphi-x Adlı Kullanıcıdan Alıntı: Veritabanında google tarzı arama yapmak mümkün müdür? Örneğin 'Abdullah' ı ararken 'abullah' ya da 'aptullah' yazsak bile bulabilsin..

Merhaba,
Kullanmak istediğiniz teknolojinin adı; "fuzzy search" tür.
Aranan kelimeye fonetik, alfabetik veya anlamca daha yakın olan anahtar kelimelere birer Score vererek, sıralama yapar ve listeler.
PostgreSql'de SQL syntax'ı içinde kullanılabiliyor.
Fakat bana göre PostgreSql'ın kullandığı mantık yanlış. Hammaliyesi fazla. Tek bir SQL parametresi ile yapılabilse daha iyi olurdu.
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#3
Sesli düşünüyorum, aradığım kelimeler base64 tutulsaydı, sen aradığında bir birine benzerlik yüzdesi olarak hesaplayarak getirseydi mümkün olur muydu acaba ?
WWW
Cevapla
#4
base64 ün kelimelere bir anlam yüklemediğini düşünüyorum Smile
WWW
Cevapla
#5
Veritabanını özel olarak belirtmediğiniz için, ben de Microsoft SQL Server için olanı yazayım. Bakınız.
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#6
(01-02-2017, Saat: 08:12)yhackup Adlı Kullanıcıdan Alıntı: Sesli düşünüyorum, aradığım kelimeler base64 tutulsaydı, sen aradığında bir birine benzerlik yüzdesi olarak hesaplayarak getirseydi mümkün olur muydu acaba ?

Fuzzy Search'te asıl temel; String eşleştirmelerdir.

Örneğin;
Aranan kelime= kot
Eşleşecek olanlar= kat,cot, coat, cost
Skor (Her dile ve lehçeye göre ayrı ayarlanır): kot=100, kat=50, cot=80, coat=40,cost=5

İkinci bir örnek:
Aranan kelime= psikoloji
Eşleşecek olanlar= pisikoloji, psikolog, psikoloğum, fizikçi oğlum, psychology, Physiology
Skor (Her dile ve lehçeye göre ayrı ayarlanır): psikoloji=100, pisikoloji=98, psikolog=75, psikoloğum=40,fizikçi oğlum=35, psychology=90, Physiology=60

Tabi bu algoritmanın görünen yüzü, arka planda mutlaka bir formülasyon vardır. Smile
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#7
SQLite kullanıyorum. MSSQL Serverdeki soundex fonksiyonu Sqlite'ta da  varmış. Ancak tam olarak desteklenmediği için bir kullanım örneği bulamadım. Problemi kısmi olarak  Levenshtein Distance Algoritması sayesinde çözdüm. Ancak maliyetli bir işlem. (içiçe sorgular ve yanlış karakter ihtimallerini deneyerek)
400 bin kelimelik db de 1-1,5 sn de istediğimi yapabiliyorum:
Aduncity kelimesi bir harf eksik ya da yanlış olma ihtimali sonucu:
1f2cc296a5.png
Cevapla
#8
Bunun bir çok yolu olabilir.

Kelime ile veritabanındaki kelimeleri karşılaştırmak bir yol. zuru yazıldı. duru, kuru, devamlı bir karakteri hatalı varsayıp alternifleri listelemek basitçe bir yol.

İki kelime benzerliğini yüzelik olarak karşılaştıran algoritmalar var. Delphi ile mutlaka örnek bulabilirsin.

Yanlış hatırlamıyorsam SSDeep denen bir karşılaştırma tekniği var. Genelde dosyalar için kullanılıyor.

Zemberek aracını inceleyebilirsin. OpenOffice gibi açık kaynaklara entegre edilebiliyor.

vs. vs.

En etkili, hızlı, pratik diyebileceğimiz yol kullanıcı deneyimleri olsa gerek. Diğer bir çok yolda yüksek sorgu sayısı, yüksek işlem gücü gerekebilir. Kullanıcılar duru yazarken genel olarak 15 hatalı kelime yazabilir. Bu yolda kullanıcı deneyimlerine göre hareket ettiğiniz için 20-30 sonucu sadece listeleme yapmak yeterli. Peki bu listeyi nasıl bulacaksınız? Asıl soru bu. Hani ücretsiz uygulamalar oluyor ya. İşte bunların ücretini farketmeden deneyimlerinizle ödüyorsunuz.
Ağlarsa kablosuz ağlar, gerisi yerel ağlar...
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  cxGrid>FindPanel Arama Yapılacak Kolonları Belirleme hi_selamlar 8 1.006 21-03-2020, Saat: 17:38
Son Yorum: baloglurecep
  Firebird veri tabanlı programda arama filitreleme baloglurecep 3 358 18-03-2020, Saat: 11:51
Son Yorum: anemos
  Birden fazla alanda arama ve listeleme Kerembacioglu 4 769 28-12-2019, Saat: 15:27
Son Yorum: m_ekici
  DbGrid deki Kolon içindeki veri arama Esrefhan 4 857 13-12-2019, Saat: 23:30
Son Yorum: Esrefhan
  StringGrid ile Excel tarzı Drag Drop 3ddark 2 617 25-11-2019, Saat: 14:06
Son Yorum: engerex



Konuyu Okuyanlar: 1 Ziyaretçi