![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Задание степени релевантности при поиске? [D7, MySQL]
Новичек © (2004-03-18 18:10:00)Господа, подскажите!
Организую поиск по базе MySQL. Строку поиска задает юзер в форме.
Например он задал, извините, "жопа". Строка поиска получается такая:
select Number from Main where
Number like '%жопа%'
or
Status like '%жопа%'
or
AddWishes like '%жопа%'
order by Number
Так вот, соответствие находится, например, в поле AddWishes, содержащем и такой текст:
"Пожалуйста предварительно позвоните получателю, чтобы дома кто-то был. Не оставляйте у соседей. Спасибо."
Но почему?! Как видите, в указанном тексте нет ничего содержащего те самые 4 буквы.
Единственное, что я смог придумать - виновата релевантность.
Так как со 100%-ой релевантностью не находит, начинает выдавать то, что считает чем-то отдаленно похожем на жопу. :)
Если виновата действительно релевантность, как сделать так, чтобы находились действительно только те слова, которые содержат требуемые 4 буквы на 100%?!
Как задать 100% степень релевантности при поиске?
Надеюсь, что хоть кто-то поймет то, что я хотел сказать. :))
Новичек (2004-03-18 22:16:00) [1]Разобрался я. Причина оказалась проста, чего и ожидалось.
У сервера стоял дефолтовый character_set - latin1
Переставил на cp1251 (под XP потому что стоит) и чудеса перестали происходить.
Новичек (2004-03-18 21:15:00) [2]Приезжай, покажу-докажу. :)
На самом деле, моя ж цель не доказать чудо была, а выяснить в чем моя ошибка. Так как в SQL я не великий мастер, вот и решил выяснить, может есть возможность задания величины "точности поиска", так как в доках не нашел такого.
А раз нет, будем искать ошибку в коде. Ну или в генах.
Насчет вот перекодировки - здравая мысль. Она у меня мелькала уже, но как проверить пока не представляю.
Reindeer Moss Eater (2004-03-18 19:12:00) [3]А проблема в том, что почему-то находятся не только записи, где есть сочетание требуемых символов, но и записи, где в принципе не наблюдается искомого сочетания.
Чем докажешь наличие чуда?
Поле AddWishes в найденной записи не содержит этой последовательности символов, и север нашел эту запись благодаря наличию этой последовательности в других полях этой записи.
Вот в этом и проблема - находится то, чего нет реально!
Тебе так только кажется.
Если конечно не имеет место кудрявая неразбериха с перекодировкой конкретных символов библиотеой доступа.
Новичек (2004-03-18 19:05:00) [4]Да, наверное, я плохо объясняю, хотя раньше за мной такого не наблюдалось..
Я хочу найти то, что задает юзер - если он задал найти все записи, содержашие слово "жопа" в базе, то они и должны найтись. Причем те, где это сочетание букв действительно имеется.
А проблема в том, что почему-то находятся не только записи, где есть сочетание требуемых символов, но и записи, где в принципе не наблюдается искомого сочетания.
Это скабрезное слово я выбрал потому, что именно его и попробовал ввести юзер при проверке программы. Сначала он выбрал поиск по номеру заказа и запись нашлась. А потом для хохмы он набрал это слово и нашлись записи, в которых этого слова и близко нет.
А почему - не понимаю. Вот в этом и проблема - находится то, чего нет реально!
Reindeer Moss Eater (2004-03-18 18:52:00) [5]Начнем с того, что ни я ни кто-либо другой здесь кроме тебя не в курсе ЧТО ИМЕННО ты хочешь найти.
Поэтому задавать вопросы по организации поиска (поиска неизвестно чего) - рановато.
Ок, хорошо, тогда как организовать поиск по нескольким полям сразу, если не через чередование этих полей через OR?
У тебя это уже сделано.
Причем находит то что ищешь. В чем проблема?
Новичек (2004-03-18 18:48:00) [6]Ок, хорошо, тогда как организовать поиск по нескольким полям сразу, если не через чередование этих полей через OR?
Если я задам
select Number from Main where Number like '%жопа%' order by Number
будет искаться по полю Number, а мне надо, чтобы искалось по нескольким полям.
Или что, объединять несколько разных запросов через UNION?
Reindeer Moss Eater (2004-03-18 18:41:00) [7]На тот запрос тебе был дан ответ, что поле AddWishes не при чем.
У тебя куча лайков и все по OR объединены.
Нет у сервера никакой релевантности, ковалентности и проч. ерунды.
Новичек (2004-03-18 18:37:00) [8]Запрос, который реально ставит меня в тупик, я привел в первом сообщении. Он находит соответствие в том месте, где его быть не должно, если я правильно понял смысл работы like и символов '%'.
>> И выводов никаких поэтому нет.
Жаль. Но спасибо за попытку разобраться. :)
Reindeer Moss Eater (2004-03-18 18:20:00) [9]Я вижу твой запрос и значение поля и делаю вывод.
А что ты там удаляешь и какой запрос реально ставит тебя в тупик - мне неизвестно.
И выводов никаких поэтому нет.
Новичек (2004-03-18 18:17:00) [10]Я исключал поля поиска по очереди, пока не перестало находиться.
Перестало находиться после удаления "оr AddWishes like..".
Отсюда я и сделал вывод, что находится именно в этом поле.
Я неправ?
Reindeer Moss Eater (2004-03-18 18:13:00) [11]У тебя же все условия по OR
Откуда уверенность что найдено по полю AddWishes ?