Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.18;
Скачать: CL | DM;

Вниз

Задание степени релевантности при поиске?   Найти похожие ветки 

 
Новичек   (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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.036 c
14-1080316094
Vovchik_A
2004-03-26 18:48
2004.04.18
Я плалкалъ


3-1080030743
VIB
2004-03-23 11:32
2004.04.18
Поле типа Image


3-1079696404
wadimkas
2004-03-19 14:40
2004.04.18
Результат из Tquery


7-1076331450
Chery
2004-02-09 15:57
2004.04.18
Как узнать имя лок. диска и метку с кот. запускается приложение?


14-1079973876
Пилкин
2004-03-22 19:44
2004.04.18
Проблема с OutlookXP