Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
7-1076228238
Ермак
2004-02-08 11:17
2004.04.18
Взаимодействие с сервисом


3-1079606356
SnapIn
2004-03-18 13:39
2004.04.18
Как увидеть данные из .ORA


1-1080546501
lehich
2004-03-29 11:48
2004.04.18
ListBox1.Items.Text и разделители


3-1080051989
Gari
2004-03-23 17:26
2004.04.18
Переход по связан записям таблицы средством компоненты DBComboBox


4-1076335924
VKSam
2004-02-09 17:12
2004.04.18
ToolBar





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский