Ben aralarında sözcüksel / anlamsal benzerliklere dayalı arama yapmak istiyorum, küçük bir sözlük veritabanı uygulama ediyorum ..
Örneğin, beer
gibi soda, lemonade, wine, champagne
gibi "kardeş kelime" "farklı yönde" her "farklı" (örnek vardır: ilk iki fikrinin "ılımlı" sürümleri "bira", son iki ise "daha aşırı" versiyonları)
Ben WordNet bir API vardır biliyorum, ama benim sözlükteki kelimeler (ve ifadeler) en fazla gayri resmi yollarla ilgili
(Başka bir örnektir. "Gangster" [nun, orphan, rebel
] {criminal, mafia boss, murderer
}, sağa sola, ve [] içinde olanlar "pozitif ekstremiteler" kabul edilmektedir ekstremite değişir nereye ilgili, ve {} içinde olanlar) "negatif ekstremiteler" vardır
Kullanım:
- Kullanıcı arama girişi (bir kelime) girer
- Kelimesinin kardeş kelime ile eşleştirilir.
- Kullanıcı, yukarıdaki örneklerde olduğu gibi, en az 2 yönde, ekstremitelerde değiştirerek "sözcüğü ince ayarını" için şansı vardır.
Böyle bir arama uygulamak için en iyi yolu nedir - 2 ve 3 numaralı adımları yukarıda?
Ben ben aşinayım ne olduğundan PHP / MySQL kullanarak düşünüyor yaşıyorum, ama daha iyi alternatifler nelerdir? Yine - Bu büyük bir sözlük değildir unutmayın. Bu ortak kelimelerin sadece bir seçim.
İşte bu cevaplarken de benim girişimi - çok, çok temel ... iyileştirme önerileri bekliyoruz:
MySQL tablo kelimeler:
id, (primary key, autoincrement)
word (varchar 75),
relatedword (varchar 75)
relationscore (int 11)
direction (tinyint, -1 or 1)
Bir $ kelime sorgu ve $ yön verilir:
"SELECT relatedword FROM words WHERE word='$word' AND direction=$direction ORDER BY relationscore DESC"