Я думав про це і намагався придумати рішення, як нечітко шукати базу даних, якщо, наприклад, користувач вводить орфографічну помилку. Якісь гострі проблеми з логікою, що стоїть за цим? Чи буде це працювати і чи робилося це раніше?
Наша таблиця, яку ми хочемо шукати:
**tblArticles**
Body - Soundex_Body - CharacterCoded_Body
Тому ми зберігаємо неочищений текстовий корпус для фізичного відображення. Інші 2 стовпці використовуються для пошуку, які попередньо обчислюються наступним чином:
Soundex
Body розбито на слова, і перекладено на його звукову версію. IE, в результаті орган може бути чимось на зразок:
H252 B54 C23 E33... etc
Тож хтось може ввести "динозора", і тіло статті читає "динозавра", і те і інше оцінюють за B26. Потім ми запускаємо LIKE на звукову величину пошукової фрази.
Персонаж закодований
З огляду на символьне відображення, яке відображає символи до простих чисел, IE:
h = 2
e = 3
l = 5
o = 7
p = 11
c = 13
help = 2*3*5*11 = 330
hello = 2*3*5*5*7 = 1050
hell = 2*3*5*5 = 150
hlep = 2*5*3*11 = 330
cello = 13*3*5*5*7 = 6825
Якщо користувач мав намір ввести "привіт", але він перемикав два або більше символів, наприклад "hlelo", він оцінював би те саме число. Розділіть сировину на слова, просто кодуйте кожне слово та зберігайте в базі даних, надаючи поле, яке виглядає так:
330 6825 330 1050... etc
Тоді ми можемо любити пошук за цим значенням, щоб відповідати помилкам.
Переваги
- Опечатки захищені від
- Фонетично неправильні написання захищені від
- Більше не рідний англійський розмовний дружній
- Працюватиме будь-якою мовою (де працює звуковий файл)
Коментарі та думки? Сорт багатошарового пошуку. Ви, звичайно, можете повернути вагові значення, щоб зробити його ще кращим (IE буквальна відповідність тексту тексту вартує більше), але чи це хороше рішення для написання помилок написання тексту та інших носіїв англійської мови, які роблять пошук?