2013-06-11 3 views
0

Я пытаюсь создать поисковую систему для своего сайта. Он работает очень хорошо, если я вводим одно слово в качестве поискового запроса, например foo или bar. Проблема в том, что он терпит неудачу, когда я ввожу два или более слова, например foo bar.PHP: попытка создать поисковую систему для моего сайта

Как я должен иметь дело с такими словами? Разделите слова (используя explode), а затем найдите каждое слово в таблице для индексированных слов? Это не очень хорошая идея.

Я использую метод GET для этой поисковой системы.

<?php 
if($_GET['query']){ 
    $search = $_GET['query']; 
    $search = strip_tags($search); 
    $search = trim($search); 
    $search = addslashes(strtolower($search)); 

echo $search; 
$start = microtime(); 
$searchquery = mysql_query("SELECT sw_wordid FROM tbl_search_word WHERE sw_word LIKE '%$search%'"); 
           //tbl_search_word contains all the indexed words 

$searchrow = mysql_fetch_array($searchquery); 
$end = microtime(); 

echo $searchrow['sw_wordid'].'<br />'; 
echo $end - $start; 
} 

?>

+0

Вы используете get? после? или что-то другое? –

+3

Я бы предложил посмотреть на что-то наподобие Zend_Search_Lucene – Orangepill

+0

@RickyMason Я использую GET –

ответ

1

Прежде всего, я согласен с Hanky ​​муры расщеплению это само по себе не плохой вариант, вы можете попробовать, но, как никто другой помочь вам с какой-либо другой альтернативы я дам вам один более того, это не так эффективно при поиске многих ключевых слов и в зависимости от того, что вы хотите в результате.

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

Вы можете попробовать это:

$searchquery = mysql_query(" 
SELECT sw_wordid FROM tbl_search_word WHERE INSTR(sw_word,'$search')>0 
"); 

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

Пожалуйста, поделитесь своими результатами. Надеюсь, это вам поможет.

+0

Спасибо, за ваш ответ. Я попробую это. –

+0

Хорошо, дайте нам знать, как это работает для вас приятно помочь – sandino

-1

Я предполагаю, что введенное вами пространство принято как% 20, поэтому возникает ошибка, почему бы не использовать str_replace («% 20», «», $ query);

надеюсь, что это поможет

Смежные вопросы