|
|
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
Зарегистрирован: 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
Зарегистрирован: 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
Зарегистрирован: 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
Сообщений: 962
|
Уважаемый Сергей, не стоит публиковать Ваш вопрос на всех разделах форума. Отнимаете наше время.
|