테스트 사이트 - 개발 중인 베타 버전입니다

검색 질문입니다.

게시판에서 제가  그누보드 라는 제목으로 글을 올렸습니다.

그런데 게시판이나 전체검색에서 그누보드라고 검색하면 검색이 되는데 그누 보드 또는 그 누보드 이렇게 띄어쓰기하면 게시물이 없다고 나옵니다

띄어쓰기와 상관없이 게시물이 검색되게 할 수 없나요

어느 폴더의 어떤 파일을 수정해야하나요?

초보라서 봐도 모르겠고 여기에 아무리 검색해서 찾아봐도 여기에 맞는 답변이 없어서 질문 드립니다.

즐거운 하루되세요.

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

어딘지 자세하게 몰라 붉은색으로 표시한 부분을 str_replace 넣었더니 똑같더라고요

저기가 아닌가요?

include_once("./_common.php");

 

//if (!$stx) alert("검색어가 없습니다."); 

 

$g4[title] = "검색 : " . $stx;

include_once("./_head.php");

 

if ($stx)

{

    //$stx = trim($stx);

 

$stx = preg_replace("/\//", "\/", trim($stx));

    $sop = strtolower($sop);

    if (!$sop || !($sop == "and" || $sop == "or")) $sop = "and"; // 연산자 and , or

    if (!$srows) $srows = 10; // 한페이지에 출력하는 검색 행수

 

    unset($g4_search[tables]);

    unset($g4_search[read_level]);

    $sql = " select gr_id, bo_table, bo_read_level from $g4[board_table] where bo_use_search = '1' and bo_list_level <= '$member[mb_level]' ";

    //            and bo_read_level <= '$member[mb_level]' ";

    if ($gr_id)

        $sql .= " and gr_id = '$gr_id' ";

    if ($onetable) // 하나의 게시판만 검색한다면

        $sql .= " and bo_table = '$onetable' ";

    $sql .= " order by bo_order_search, gr_id, bo_table ";

    $result = sql_query($sql);

    for ($i=0; $row=sql_fetch_array($result); $i++) 

    {

        if ($is_admin != "super") 

        {

            // 그룹접근 사용에 대한 검색 차단

            $sql2 = " select gr_use_access, gr_admin from $g4[group_table] where gr_id = '$row[gr_id]' ";

            $row2 = sql_fetch($sql2);

            // 그룹접근을 사용한다면

            if ($row2[gr_use_access])

            {

                // 그룹관리자가 있으며 현재 회원이 그룹관리자라면 통과

                if ($row2[gr_admin] && $row2[gr_admin] == $member[mb_id])

                    ;

                else 

                {

                    $sql3 = " select count(*) as cnt from $g4[group_member_table] where gr_id = '$row[gr_id]' and mb_id = '$member[mb_id]' and mb_id <> '' ";

                    $row3 = sql_fetch($sql3);

                    if (!$row3[cnt])

                        continue;

                }

            }

        }

        $g4_search[tables][] = $row[bo_table];

        $g4_search[read_level][] = $row[bo_read_level];

    }

 

    $search_query = "sfl=".urlencode($sfl)."&stx=".urlencode($stx)."&sop=$sop";

 

 

    $text_stx = get_text(stripslashes($stx));

 

    $op1 = "";

 

    // 검색어를 구분자로 나눈다. 여기서는 공백

    $s = explode(" ", strip_tags($stx));

 

    // 검색필드를 구분자로 나눈다. 여기서는 +

    $field = explode("||", trim($sfl));

 

    $str = "(";

    for ($i=0; $i

    {

        if (trim($s[$i]) == "") continue;

        //$search_str = strtolower($s[$i]);

        $search_str = $s[$i];

        $str .= $op1;

        $str .= "(";

        

        $op2 = "";

        for ($k=0; $k

        {

            $str .= $op2;

            switch ($field[$k]) 

            {

                case "mb_id" :

                case "mb_name" :

                    $str .= "$field[$k] = '$s[$i]'";

                    break;

                default :

                    if (preg_match("/[a-zA-Z]/", $search_str))

                        $str .= "INSTR(LOWER($field[$k]), LOWER('$search_str'))";

                    else

                        $str .= "INSTR($field[$k], '$search_str')";

                    break;

            }

            $op2 = " or ";

        }

        $str .= ")";

 

        $op1 = " $sop ";

 

$search_str = str_replace("", "", $search_str);

//-- 금지 단어가 포함 되어 있나?

if(strpos("-".$config[cf_filter], $search_str)) alert("금지어가 포함 되어 있습니다.");

    }

    $str .= ")";

 

    //$sql_search = $str . " and wr_option not like '%secret%' "; // 비밀글은 제외

    $sql_search = $str;

 

    $str_board_list = "";

    $board_count = 0;

 

    $time1 = get_microtime();

 

    $total_count = 0;

    for ($i=0; $i

    {

        $tmp_write_table   = $g4[write_prefix] . $g4_search[tables][$i];

        

        $sql = " select wr_id from $tmp_write_table where $sql_search ";

        $result = sql_query($sql, false);

        $row[cnt] = @mysql_num_rows($result);

 

        //$sql = " select count(*) as cnt from $tmp_write_table where $sql_search ";

        //$row = sql_fetch($sql);

 

        $total_count += $row[cnt];

        if ($row[cnt]) 

        {

            $board_count++;

            $search_table[] = $g4_search[tables][$i];

            $read_level[]   = $g4_search[read_level][$i];

            $search_table_count[] = $total_count;

 

            $sql2 = " select bo_subject from $g4[board_table] where bo_table = '{$g4_search[tables][$i]}' ";

            $row2 = sql_fetch($sql2);

            $str_board_list .= "

  • $row2[bo_subject] ($row[cnt])";

            }

        }

     

        $rows = $srows;

        $total_page  = ceil($total_count / $rows);  // 전체 페이지 계산

        if ($page == "") { $page = 1; } // 페이지가 없으면 첫 페이지 (1 페이지)

        $from_record = ($page - 1) * $rows; // 시작 열을 구함

     

        for ($i=0; $i

        {

            if ($from_record < $search_table_count[$i]) 

            {

                $table_index = $i;

                $from_record = $from_record - $search_table_count[$i-1];

                break;

            }

        }

     

        $bo_subject = array();

        $list = array();

     

        $k=0;

        for ($idx=$table_index; $idx

        {

            $sql = " select bo_subject from $g4[board_table] where bo_table = '$search_table[$idx]' ";

            $row = sql_fetch($sql);

            $bo_subject[$idx] = $row[bo_subject];

     

            $tmp_write_table = $g4[write_prefix] . $search_table[$idx];

     

            $sql = " select * from $tmp_write_table where $sql_search order by wr_id desc limit $from_record, $rows ";

            $result = sql_query($sql);

            for ($i=0; $row=sql_fetch_array($result); $i++) 

            {

                // 검색어까지 링크되면 게시판 부하가 일어남

                $list[$idx][$i] = $row;

                $list[$idx][$i][href] = "./board.php?bo_table=$search_table[$idx]&wr_id=$row[wr_parent]";

     

                if ($row[wr_is_comment]) 

                { 

                    $link .= "#c{$row[wr_id]}";

                    $sql2 = " select wr_subject, wr_option from $tmp_write_table where wr_id = '$row[wr_parent]' ";

                    $row2 = sql_fetch($sql2);

                    //$row[wr_subject] = $row2[wr_subject];

                    $row[wr_subject] = get_text($row2[wr_subject]);

                }

     

                // 비밀글은 검색 불가

                if (strstr($row[wr_option].$row2[wr_option], "secret")) 

                    $row[wr_content] = "[비밀글 입니다.]";

     

                $subject = get_text($row[wr_subject]);

                if (strstr($sfl, "wr_subject")) 

                    $subject = search_font($stx, $subject);

     

                if ($read_level[$idx] <= $member[mb_level])

                {

                    $content = cut_str(get_text(strip_tags($row[wr_content])),300,"…");

                    if (strstr($sfl, "wr_content")) 

                        $content = search_font($stx, $content);

                }

                else

                    $content = '';

     

                $list[$idx][$i][subject] = $subject;

                $list[$idx][$i][content] = $content;

                $list[$idx][$i][name] = get_sideview($row[mb_id], cut_str($row[wr_name], $config[cf_cut_name]), $row[wr_email], $row[wr_homepage]);

                

                $k++;

                if ($k >= $rows) 

                    break; 

            }

            sql_free_result($result);

            

            if ($k >= $rows) 

                break; 

     

            $from_record = 0;

        }

     

        $write_pages = get_paging($config[cf_write_pages], $page, $total_page, "$_SERVER[PHP_SELF]?$search_query&gr_id=$gr_id&srows=$srows&onetable=$onetable&page=");

     

        echo "";

    }

     

    //-- 검색 결과가 있을 때만 검색어 기록. 검색 결과가 없다는 건 자연어가 아닐 수 있을 가능성이 있음.

    if($board_count) {

    // 인기검색어

    //-- 단어 별로 저장 할 때

    /*

    for($i = 0; $i < count($s); $i++) {

       $sql = " insert into $g4[popular_table] set pp_word = '$s[$i]', pp_date = '$g4[time_ymd]', pp_ip = '$_SERVER[REMOTE_ADDR]' ";

    sql_query($sql, FALSE);

    }

    */

     

    //-- 단어 두 개까지만 저장

    $s_word = "";

    if(count($s) >= 2) {

    $s_word = $s[0] . " " . $s[1];

    }else{

    $s_word = $s[0];

    }

        $sql = " insert into $g4[popular_table] set pp_word = '$s_word', pp_date = '$g4[time_ymd]', pp_ip = '$_SERVER[REMOTE_ADDR]' ";

    sql_query($sql, FALSE);

    }

     

    $group_select = "";

     

    if (!$sfl) $sfl = "wr_subject";

    if (!$sop) $sop = "or";

     

    include_once("$search_skin_path/search.skin.php");

     

    include_once("./_tail.php");

    ?>

  • 로그인 후 평가할 수 있습니다

    댓글을 작성하려면 로그인이 필요합니다.

    /bbs/search.php 

    /skin/search/basic/search.skin.php

     

    수정은 위 파일에서 하시면 되구요 

     

    띄어쓰기 부분은 검색 쿼리 들어갈때 ( 검색 단어 or 공백 없는 검색단어[str_replace] ) 형태로 넣으시면  두가지 버전으로 검색이 되면 될거같습니다.

     

    로그인 후 평가할 수 있습니다

    답변에 대한 댓글 1개

    감사합니다

    댓글을 작성하려면 로그인이 필요합니다.

    답변을 작성하려면 로그인이 필요합니다.

    로그인
    🐛 버그신고