[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Полнотекстовой поиск в БД
Эли4ка
Добрый вечер дорогие форумчане!Помогите пожалуйста доделать полнотекстовой поиск по БД
есть код для создания таблицы в MySQL
CREATE TABLE `articles` (
`id` int(10) unsigned NOT NULL auto_increment,
`title` varchar(200) default NULL,
`body` text,
PRIMARY KEY (`id`),
FULLTEXT KEY `ft1` (`title`,`body`),
FULLTEXT KEY `ft2` (`body`)
)
ENGINE=MyISAM DEFAULT CHARSET=utf8;

(Взято с хабрахабра)
Тогда поиск по БД делаю через
$query = mysql_query("SELECT * FROM articles WHERE MATCH(body) AGAINST('$search')",$db);
if(mysql_num_rows($query) > 0){
$sql = mysql_fetch_array($query);
do{
echo "<div>".$sql['text']."</div>";
}while($sql = mysql_fetch_array($query));
}else{
echo "Нет результатов";
}

Но в любом случае возвращает Нет результатов.Хотя БД заполнена 1000 различными статьями.Почему может так быть?



Спустя 5 минут, 12 секунд (21.04.2012 - 14:37) dadli написал(а):
... AGAINST('$search' IN BOOLEAN MODE)

пробуите

Спустя 3 минуты, 41 секунда (21.04.2012 - 14:41) Эли4ка написал(а):
dadli
почему-то все равно Нет результатов..может таблица косячная?

Спустя 3 минуты, 41 секунда (21.04.2012 - 14:45) dadli написал(а):
ааа...
echo "<div>".$sql['text']."</div>";

а где вам поле text ?

Спустя 3 минуты, 58 секунд (21.04.2012 - 14:49) dadli написал(а):
и содержание переменная $search, точно есть в поле "body" ?

Спустя 2 минуты, 25 секунд (21.04.2012 - 14:51) Эли4ка написал(а):
dadli
тоже по нулям..можете у себя проверить при каких действиях текстовой поиск работает,а мне решения дать?если конечно не сложно..

Спустя 9 минут, 21 секунда (21.04.2012 - 15:00) dadli написал(а):
Эли4ка

$search = 'mercedes';

$res = mysql_query(
"SELECT * FROM articles WHERE MATCH(body) AGAINST('".$search."' IN BOOLEAN MODE) ")
or die(mysql_error());

if (mysql_num_rows($res) > 0) {
while ($row = mysql_fetch_row($res)) {
echo $row[0].' - '.$row[1].' - '.$row[2].'<br>';
}
}

else {
echo 'net rezultatov';
}


в резултате будит те строки, у которих в поле body есть слова "mercedes" (так как $search = 'mercedes';)

Спустя 16 часов, 10 минут, 39 секунд (22.04.2012 - 07:11) Эли4ка написал(а):
dadli
спасибо.Но я так подумала,а может использовать LIKE ?

Спустя 2 часа, 16 минут (22.04.2012 - 09:27) dadli написал(а):
Эли4ка
ето зависимо на ситуацие, если искаете в поле где нет балшои текст, то лучшее LIKE
полнотекстови поиск нужен, когда искаем слово в балшом тексте

Спустя 31 минута, 9 секунд (22.04.2012 - 09:58) Shkiper написал(а):
Цитата
$query = mysql_query("SELECT * FROM articles WHERE MATCH(body) AGAINST('$search')",$db);
if(mysql_num_rows($query) > 0){
  $sql = mysql_fetch_array($query);
  do{
  echo "<div>".$sql['text']."</div>";
  }while($sql = mysql_fetch_array($query));
}else{
  echo "Нет результатов";
}

Знаменитая Поповщина!!!

Спустя 2 часа, 39 минут, 8 секунд (22.04.2012 - 12:37) Эли4ка написал(а):
Deert
хорошо,дайте свой вариант..

Спустя 7 минут, 13 секунд (22.04.2012 - 12:44) Shkiper написал(а):
Эли4ка зачем ты перед циклом в $sql загоняешь вызом массива из выборки из БД, и в параметрах цикла???
[b]$sql = mysql_fetch_array($query);[/b]
do{
echo "<div>".$sql['text']."</div>";
}[b]while($sql = mysql_fetch_array($query))[/b];

Я конечно не профи, но мот мой вариант:

<?php
$query = mysql_query("SELECT * FROM articles WHERE MATCH(body) AGAINST('$search')",$db) or die(mysql_error());
//И помни этот метод поиска ищет слова или фразы которые по содержанию больше 4 символов иначе он выдаст пустой результат
if(mysql_num_rows($query) > 0){
while($sql = mysql_fetch_assoc($query))
{
echo "<div>".$sql['body']."</div>";
}
}
else{
echo "Нет результатов";
}

Спустя 1 день, 18 часов, 8 минут, 40 секунд (24.04.2012 - 06:53) Эли4ка написал(а):
Deert
хорошо,попробую Ваш..

Спустя 11 часов, 10 минут, 12 секунд (24.04.2012 - 18:03) Shkiper написал(а):
Эли4ка ну как.....???

Спустя 1 час, 23 минуты, 30 секунд (24.04.2012 - 19:27) sergeiss написал(а):
Цитата (Эли4ка @ 21.04.2012 - 16:32)
$sql = mysql_fetch_array($query);
  do{
  echo "<div>".$sql['text']."</div>";
  }while($sql = mysql_fetch_array($query));

Фу, какая гадость... Эта "поповщина" ни к чему хорошему не приведет. Что, собственно говоря, и показывает твоя тема.
Низзя так делать! Попробуй описать словами, тут на форуме, что будет в случае отсутствия записей в БД?

Спустя 10 часов, 4 минуты, 49 секунд (25.04.2012 - 05:32) Shkiper написал(а):
sergeiss
echo "Нет результатов";
:rolleyes: :rolleyes: :rolleyes: :rolleyes: :D :D :D :D :D

Спустя 3 часа, 4 минуты, 22 секунды (25.04.2012 - 08:36) Эли4ка написал(а):
я все поняла,но это просто из-за того,что мне было лень переделывать запрос по другому,а так я совсем по другому делаю..

Спустя 7 минут, 51 секунда (25.04.2012 - 08:44) Shkiper написал(а):
Эли4ка wink.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.