Регистрация
Вход через соцсети
Восстановление пароля

сортировка результатов поиска по релевантности

Новый топик
06.12.2011, 08:12
Ответить | Цитировать
Gorjelin
Угаев Евгений Анатольевич

Зарегистрирован:
2010-02-26
Сообщений: 18

Добрый день!
Возникла проблема с поиском.
Использую:
#полнотекстовый поиск с использованием релевантности
$query_where = "MATCH(a.Title,a.Body) AGAINST('".addslashes($text)."') AND a.URL LIKE 'http://".$SEARCH_HOST."%'";
$query_order = "MATCH(a.Title,a.Body) AGAINST('".addslashes($text)."') DESC";

но результаты поиска выводятся как-то не правильно: наиболее релевантные ответ на запрос может располагаться 7-ым -8-ым, в общем каким угодно, только не первым, как это должно бы быть. сортировка судя по всему происходит по дате индексации.

Прошу подсказать как изменить query_order, чтобы сортировать результаты по релевантности. Может быть есть другие варианты решения проблемы?
06.12.2011, 13:51
Ответить | Цитировать
Denis
Denis

Зарегистрирован:
2008-07-15
Сообщений: 666

Используете новый модуль поиска

Ксю доставляет...
06.12.2011, 14:51
Ответить | Цитировать
Gorjelin
Угаев Евгений Анатольевич

Зарегистрирован:
2010-02-26
Сообщений: 18

Цитата:
Используете новый модуль поиска

увы нет возможности...


где происходит этот запрос:

SELECT SQL_CALC_FOUND_ROWS a.`Message_ID`, a.`User_ID`, a.`IP`, a.`UserAgent`, a.`LastUser_ID`, a.`LastIP`, a.`LastUserAgent`, a.`Priority`, a.`Parent_Message_ID`, sub.`S
ubdivision_ID`, CONCAT( '', sub.`Hidden_URL`), cc.`Sub_Class_ID`, cc.`EnglishName`, a.`Checked`, a.`Created`, a.`Keyword`, a.`LastUpdated` + 0 AS LastUpdated, a.Title, a.Body, a.URL, a.Size, a.Indexed, a.Sou
rce
FROM (`Message60` AS a )
LEFT JOIN `Subdivision` AS sub ON sub.`Subdivision_ID` = a.`Subdivision_ID`
LEFT JOIN `Sub_Class` AS cc ON cc.`Sub_Class_ID` = a.`Sub_Class_ID`
WHERE 1 AND a.`Parent_Message_ID` = '0' AND MATCH(a.Title,a.Body) AGAINST('ODG AC42A5-43N-R5-LZ') AND a.URL LIKE 'адрес сайта%' AND a.`Checked` = 1 ORDER BY MATCH(a.Title,a.Body) AGAINST('ODG AC42A5-43N-R5-LZ') DESC LIMIT 0,10

хочу вставить дополнительный селект с выводом релевантного варианта впереди
06.12.2011, 16:55
Ответить | Цитировать
Denis
Denis

Зарегистрирован:
2008-07-15
Сообщений: 666

В системных настройках компонента "Поиск по сайту" можно изменять этот запрос

Ксю доставляет...
07.12.2011, 08:10
Ответить | Цитировать
Gorjelin
Угаев Евгений Анатольевич

Зарегистрирован:
2010-02-26
Сообщений: 18

Цитата:
В системных настройках компонента "Поиск по сайту" можно изменять этот запрос


можно изменять querywhere и queryorder, остальное нельзя. Вообще это поразительно! Казалось бы не сложная задача настроить поиск по каталогу из 5 тыс товаров, при том, что весьма простая структура. Я вынужден делать и переделывать этот поиск битый час... и в итоге он продолжает работать как попало: то ищет то не ищет, то индексирует, то не индексирует, релевантные товары ниже не релевантных и как со всем этим бороться неизвестно. Это бы все ладно, если бы поиск был бесплатным, но он же стоит денег, и не малых!

при том, что бесплатные аналоги справляются с этой задаче куда как лучше! очень неприятное чувство, что я купил не готовую ЦМС, а конструктор "доделай сам" за большие деньги.

в таблице результатов индексации есть товар с названием EPJ-16-10-2,2-C , в поиске "По Вашему запросу ничего не найдено." и хоть что делай, не ищет и все.


ВСЕ, ПОБЕДИЛ СПАСИБО!

Сразу не дошло, что можно так сделать:

$query_where = "(a.Title LIKE '%$text%') OR MATCH(a.Title,a.Body) AGAINST('".addslashes($text)."') AND a.URL LIKE 'http://".$SEARCH_HOST."%'";
$query_order = "(a.Title LIKE '%$text%') desc, MATCH(a.Title,a.Body) AGAINST('".addslashes($text)."') DESC";

но ругался я все равно по делу большая улыбка
07.12.2011, 10:25
Ответить | Цитировать
DiGGy
DiGGy
DiGGy

Зарегистрирован:
2005-04-04
Сообщений: 1546

имхо. Лучше не использовать полноконтекстный модуль поиска по сайту для каталога товаров. Лучше сделать этот поиск самому по нужным полям, параметрам и т.п. с нужной сортировкой.

Temet nosce...
07.12.2011, 10:48
Ответить | Цитировать
Gorjelin
Угаев Евгений Анатольевич

Зарегистрирован:
2010-02-26
Сообщений: 18

Цитата:
Лучше сделать этот поиск самому по нужным полям, параметрам и т.п. с нужной сортировкой.

у меня три варианта поиска по каталогу, в том числе такой, о котором вы говорите, просто хотелось, чтобы по каталогу можно было искать +ом тем же поиском, что и по всему сайту
18.11.2013, 21:03
Ответить | Цитировать
Egorov Serg

Зарегистрирован:
2013-11-05
Сообщений: 15

Здравствуйте! Голову сломал - как делается запрос в бд в системных настройках в поиске по каталогу?
Как сделать запрос в системных настройках компонента?
<?php
if($_GET['search_action']=='1') {

$ignore_sub = $ignore_cc = 1;

$words = explode(" ",$srchPat[0]);
$query_where .= "(";
foreach ($words as $word) {
$query_where .= " a.Name LIKE '%$word%' OR a.Description LIKE '%$word%' OR ";
}
$query_where .= " )";
$query_select .= "a.Name as Name,a.Description as Description, a.Details as Details, ";
$query_select .= "a.Price as Price, a.Image as Image ";

//SELECT $query_select FROM `Message505` AS a WHERE $query_where;


}
?>
чтобы выодил товары в объекте вывода $f_Name,$f_Image и т.д.???

В рез - те товары не выводит....
18.11.2013, 22:14
Ответить | Цитировать
Руслан Густокашин
Студия Вэлпис
Руслан Густокашин

Зарегистрирован:
2012-02-06
Сообщений: 869

Уважаемый Сергей, не стоит публиковать Ваш вопрос на всех разделах форума. Отнимаете наше время.

198 196 2013-11-18 22:14:06 11740
Описание проекта