|
|
|
|
|
для: Loki
(06.05.2005 в 10:59)
| | Это полнотекстовый поиск (MATCH(...) AGAINST(...)) по столбцам name,author ключевого слова $temp в логическом режиме (IN BOOLEAN MODE). Столбцы обязательно должны быть индексированы FULLTEXT и иметь тип производный от TEXT. Подробнее можно ознакомится с этой методой в темах по ссылкам
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=148
http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=514 | |
|
|
|
|
|
|
|
для: cheops
(04.05.2005 в 22:15)
| | А можно чуть подробнее описать что именно делает конструкция:
MATCH (name,author) AGAINST ('$temp*' IN BOOLEAN MODE)
|
А то я ни с чем подобным не сталкивался. | |
|
|
|
|
|
|
|
для: Loki
(04.05.2005 в 13:33)
| | Да, всё правильно поиск производится по автору и сообщению или по автору и теме. Ошибки нет, так как поиск ведётся в разных таблицах, либо posts, либо themes. | |
|
|
|
|
|
|
| смущает меня фрагмент кода отвечающий за поиск.
файл srchform.php
switch($srchwhere)
{
case 1: // Поиск в названиях тем и авторах
{
$name = trim($name);
$temp = strtok($name," ");
if($logic==0) $logstr = "or";
else $logstr = "and";
while ($temp)
{
// Полнотекстовый поиск в столбцах name и authors
if($is_query)
$tmp1 .= " $logstr MATCH (name,author) AGAINST ('$temp*' IN BOOLEAN MODE)";
else
$tmp1 .= "MATCH (name,author) AGAINST ('$temp*' IN BOOLEAN MODE)";
$is_query = true;
$temp = strtok(" ");
}
// Формируем SQL-запрос
$query = "SELECT * FROM themes
WHERE $tmp1 AND
id_forum = $id_forum AND
hide = 'show'
ORDER BY time DESC
LIMIT $numberthemes";
$thm = mysql_query($query);
break;
}
case 2: // Полнотекстовый поиск по сообщениям
{
$name = trim($name);
$temp = strtok($name," ");
if($logic==0) $logstr = "or";
else $logstr = "and";
while ($temp)
{
// Полнотекстовый поиск в столбцах name и authors
if($is_query)
$tmp1 .= " $logstr MATCH (name,author) AGAINST ('$temp*' IN BOOLEAN MODE)";
else
$tmp1 .= "MATCH (name,author) AGAINST ('$temp*' IN BOOLEAN MODE)";
$is_query = true;
$temp = strtok(" ");
}
|
То есть получается, что независимо от установок, поиск ведется только по полям name и autor. Как я понял, name - тема сообщения, autor - автор темы или поста. Или я в чем-то не разобрался? | |
|
|
|
|