powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Полнотекстовый поиск с учетом ошибок
3 сообщений из 3, страница 1 из 1
Полнотекстовый поиск с учетом ошибок
    #38848847
murtukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
есть таблица с movies с полями:

id [INT]
name [STRING]
rating [FLOAT]

Будет производиться полнотекстовый поиск по полю name и сортироваться по полю rating . Все это достаточно легко реализовать, но проблема в другом: пользователи часто неверно вводят названия фильмов (да и вообще всего).
Вопрос: как можно реализовать поиск по синонимам? То есть сам пользователь ничего не подозревает, перед ним есть всего одно поле, в которое он вводит запрос, скажем "хобит", но в выпадающем окошке с подсказками должен появиться "хоббит" (если таковой имеется в таблице).
Может в таблицу movies присобачить еще одно поле synonym , где через разделитель будут храниться заведомо ошибочные названия? И полнотекстовый поиск будет уже производиться по полям name и synonym ?

Существуют ли более разумные схемы?
Мне говорили про растояние Левенштайна (функция, определяющая "степень непохожести" двух строк), но я все еще не понял, как его применить в моем случае.
...
Рейтинг: 0 / 0
Полнотекстовый поиск с учетом ошибок
    #38848851
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
murtukov,

Это учебная задача?
Если да, то максимум, на что стоит заморачиваться, имхо - прикрутить сфинкс.
Если нет, то расстоянием Левенштейна тут не отделаться. Никакая программа сама по себе не догадается, что "блокнот" и "записная книжка" - это одно и то же.
...
Рейтинг: 0 / 0
Полнотекстовый поиск с учетом ошибок
    #38848865
murtukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет, задача не учебная, просто я упростил ее для более быстрого вхождения именно в суть проблемы.
Сфинкс планирую в любом случае прикручивать.
Кстати, я ведь написал идею на счет еще одного поля synonym . Возьмем для примера одну запись из базы:

id : 1 | name : Залечь на дно в Брюгге | synonym : брюге | rating : 7,35

очевидно, что не все знают о наличии двух "г" в названии "Брюгге", поэтому в поле synonym вносим слово "брюге".
В Сфинксе индексируем поля name и synonym и ищем уже по ним.

Механические опечатки типа "брге", "юрюгге", "брюггге" не будут учитываться. Также не будет учитываться откровенная неграмотность типа "властилин калец".

В общем, планирую сделать синонимы для слов с удвоенными буквами, слов, где путаются буквы "е" и "э" (напр. Девид и Дэвид), ну а остальное буду анализировать на ходу (например "биовульф" для "Беовульф").

Вот как-то так. Что скажете о такой схеме?
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Полнотекстовый поиск с учетом ошибок
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]