Страница: 1 |
Страница: 1 |
Вопрос: SOS, HELP И Т,Д,
Добавлено: 08.11.04 22:07
Автор вопроса: Creator
У меня есть строка, введенная пользователем и своего рода база данных. Строка - это по сути предложение со знаками препинания и т.д. Нужно введенное предложение искать в БД, игнорируя знаки препинания и, если строка не найдена в точности, то искать по максимальному совпадению слов.
То есть, например если предложение "Мама мыла большую красивую раму" в точности не существует в БД, но есть такое "Мама мыла раму", и если более близкого (Мама мыла большую раму) нет, то вернуть мне его.
То есть, короче говоря, найти, максимально соответствующее введенному, предложение. А то, блин, если вводишь например слово "гнуть", так он мне находит "ну", хотя есть ниже в БД само слово "гнуть"!
ПОМОГИТЕ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! (ИСПОЛЬЗОВАЛ InStr)
Ответы
Всего ответов: 4
Номер ответа: 1
Автор ответа:
ISpy
Разработчик Offline Client
Вопросов: 47
Ответов: 621
Web-сайт:
Профиль | | #1
Добавлено: 08.11.04 22:47
Может разбить сначала split'ом предложение на слова, а потом искать по макс совпадению строк (хотя если честно это будет очень тормозно, если база большая).
Номер ответа: 2
Автор ответа:
Creator
Вопросов: 11
Ответов: 10
Профиль | | #2
Добавлено: 08.11.04 23:29
А можешь мне конкретным примером, как бы это провернуть?
Номер ответа: 3
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #3
Добавлено: 09.11.04 06:29
Что то не верится что InStr такое выдаёт. Покажи код как ты искал.
Номер ответа: 4
Автор ответа:
ISpy
Разработчик Offline Client
Вопросов: 47
Ответов: 621
Web-сайт:
Профиль | | #4
Добавлено: 09.11.04 10:49
Примера нету, а писать некогда
Но алгаритм примерно такой:
разбиваешь сплитом, разделитель слов - пробел.
далее можно убрать из полученых слов знаки припенания, если есть.
а вот дальше.. можно попробовать искать в строках слова полученные из предложения, а кол-во совпавших слов засунуть в переменную, и в другую переменную пихать номер этой строки, далее также искать во всех строках, и если есть строка с большим количеством совпадений, то менять значение в переменных.
По-моему примерно так.