用于多个单词的PHP搜索脚本

时间:2014-05-19 09:50:59

标签: php search words

我有以下问题:

我无法搜索多个单词。

我有一个搜索引擎只搜索完整的字符串:

PHP代码:


function ft_search_sidebar() {
  $sidebar[] = array(
    "id" => "search_1",
    "content" => '<div class="section">
        <h2>'.t('Search files &amp; folders').'</h2>
        <form action="" method="post" id="searchform">
            <div>
                <input type="text" name="q" id="q" size="16" value="'.$_REQUEST['q'].'" />
                <input type="button" id="dosearch" value="'.t('Search').'" />
            </div>
            <div id="searchoptions">
                <input type="checkbox" name="type" id="type" checked="checked" /> <label for="type">'.t('Search only this folder and below').'</label>
            </div>
            <div id="searchresults"></div>
        </form>
    </div>'
  );
  return $sidebar;
}


function ft_search_ajax($act) {
  if ($act = '%search%') {
    $new = array();
    $ret = "";
    $q = $_POST['q'];
    $type = $_POST['type'];
    if (!empty($q)) {
        if ($type == "true") {
            $list = _ft_search_find_files(ft_get_dir(), $q);
        } else {
            $list = _ft_search_find_files(ft_get_root(), $q);
        }

有人可以帮助我吗?

Grtz

1 个答案:

答案 0 :(得分:0)

您需要开发一个能够进行多关键字搜索的搜索引擎,或者只需从搜索字符串中提取所有关键字,然后对每个关键字多次使用搜索引擎。像这样:

$q = $_POST['q'];
$type = $_POST['type'];
if (!empty($q)) {
    if(strpos(trim($q),' ') > 0)
    {
         $array = explode(' ',trim($q));
         foreach($array as $key=>$value)
         {
             //process search multiple times for different values of $value
         }
    }
    else
    {
         if ($type == "true")
         {
             $list = _ft_search_find_files(ft_get_dir(), $q);
         }
         else
         {
             $list = _ft_search_find_files(ft_get_root(), $q);
         }
    }