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