Поиск по нескольким полям

krok

Новичок
Поиск по нескольким полям

Приветствую уважаемых всех!

Такой вопрос - допустим я делаю поиск в скрипте

PHP:
$stmt="select id, name, text from page where name like '%что-то% or text like '%что-то%' ";
$result=mysql_query ($stmt);
while ($row=mysql_fetch_array($result)) {
... разбор строк...
}
Могу ли я при разборе $result средствами MySQL как-нибудь узнать в каком именно поле - name или text - я нашел "что-то"? Или придется в скрипте "ручками" определять поле?

Спасибо!
 

zxc

Новичок
ты можешь функциями PHP проверять свое %что-то% в переменной $row['name'], если там %что-то% не найдено => оно должно быть в поле $row['text'] (естественно проверять уже не нужно)

-~{}~ 18.07.06 05:21:

Но может есть вариант c SQL запросом (я не в курсе)
 

Black Raven

Новичок
ну если так хочешь перевесить определение в каком поле %что-то% на mysql, то:

PHP:
$stmt="select id, name, text, (name like '%что-то%') as is_name, (text like '%что-то%') as is_text  from page where name like '%что-то%' or text like '%что-то%'";
--Добавил

чуть поправил, свел к одному полю по которому сразу узнаем найдено в name, найдено в text, найдено в обоих полях:
PHP:
$sql = "select name, text, @a := name like '%test%', @b := (text like '%test%')*3, round(@a+@b,0) as what_is  from new_table where name like '%test%' or text like '%test%'";
 

krok

Новичок
Супер, спасибо! А что обозначет выражение @a := ??? не могли бы ссылку подкинуть?
 

krok

Новичок
Автор оригинала: Хранителъ
Вообще, для организации поиска лучше использовать полнотекстовой поиск
http://dev.mysql.com/doc/refman/4.1/en/fulltext-search.html
С полнотекстовым поиском не получается делать превьюхи, снипеты или как там они называются, в общем - выделять в тексте слово, которое искалось...
 

krok

Новичок
WP
Ну вот ищу я слово книга. Запрос вернет мне тексты, где есть книги, книг и т.д. Как же поисковое слово книга выделить в новости, где встречается только книги? Можно, конечно, но геморно - руками поисковое слово кромсать...
 

WP

^_^
krok
Во-первых это неправда. Нужно еще попариться чтобы он книги, книг и т.д. находил, а именно подключить стеммер (алгоритм выделения корня слова), потом переключить полнотекстовый поиск в boolean mode, и поставить * где нужно.
Во-вторых, подсветка делается регулярным выражением.
 

krok

Новичок
Видимо это я ламер :) Ты хочешь сказать, что по запросу книги полнотестовый поиск ищет книги*, а книг, книгу - не найдет?
 
Сверху