修复文本搜索引擎的小写查询以获得相同的结果

fix lower case query for text search engine for same result

我的搜索引擎有一个小错误,没有选择选项。

搜索词 (name="q" is="q") 显示不同的结果,因为它区分大小写。

示例: 搜索词 "WorkCenter" 给出 16 个结果...而搜索词 "workcenter" return 只有两个结果。

我想弄清楚如何在请求期间始终修复搜索词 (name = "q" est = "q") 和我的 3 个文本字段 (title, description, tags)小写 return 所有可能的结果。

我的search.php

<?php
include("config.php");
include("functions/import.php");
$thebaseurl = $config['baseurl'];

$sortby = cleanit($_REQUEST['s']);
$filter = intval(cleanit($_REQUEST['f']));
$page = intval(cleanit($_REQUEST['page']));
$searchterm = cleanit($_REQUEST['q']);
$mfg = intval(cleanit($_REQUEST['mfg']));
$category = intval(cleanit($_REQUEST['category']));
$type = intval(cleanit($_REQUEST['type']));

if($mfg != "")
    {
        $addtosql .= "AND mfg like'%".mysql_real_escape_string($mfg)."%'";
        STemplate::assign('mfg',$mfg);
    }
    if($category != "")
    {
        $addtosql .= "AND categories like'%".mysql_real_escape_string($category)."%'";
        STemplate::assign('category',$category);
    }
    if($type != "")
    {
        $addtosql .= "AND type like'%".mysql_real_escape_string($type)."%'";
        STemplate::assign('type',$type);
    }
    if($searchterm != "")
    {       
    $addtosql .= "AND (title like '%".mysql_real_escape_string($searchterm)."%' OR description like '%".mysql_real_escape_string($searchterm)."%' OR tags like '%".mysql_real_escape_string($searchterm)."%')";
    STemplate::assign('q',$searchterm);

    if ($sortby=="a")
    {
        $sort = "asc";
    }
    else
    {
        $sortby = "z";
        $sort = "desc";
    }
    if($page=="")
    {
        $page = "1";
    }
    $currentpage = $page;

    if ($page >=2)
    {
        $pagingstart = ($page-1)*$config['items_per_page'];
    }
    else
    {
        $pagingstart = "0";
    }


    $queryselected = "SELECT count(*) as total from docs WHERE public='1' AND active='1' $addtosql order by rating $sort limit $config[maximum_results]";
    $query2 = "SELECT * from docs WHERE public='1' AND active='1' $addtosql order by rating $sort limit $pagingstart, $config[items_per_page]";

    STemplate::assign('pagetitle',$lang['664']." ".$searchterm);
    $executequeryselected = $conn->Execute($queryselected);

    $totaldocs = $executequeryselected->fields['total'];
    if ($totaldocs > 0)
    {
        if($executequeryselected->fields['total']<=$config['maximum_results'])
        {
            $total = $executequeryselected->fields['total'];
        }
        else
        {
            $total = $config['maximum_results'];
        }
        $toppage = ceil($total/$config['items_per_page']);
        if($toppage==0)
        {
            $xpage=$toppage+1;
        }
        else
        {
            $xpage = $toppage;
        }       
        $executequery2 = $conn->Execute($query2);
        $docs = $executequery2->getrows();
        $beginning=$pagingstart+1;
        $ending=$pagingstart+$executequery2->recordcount();
        $pagelinks="";
        $k=1;
        $theprevpage=$currentpage-1;
        $thenextpage=$currentpage+1;
        $added = "q=$searchterm&page=";
        if ($currentpage > 0)
        {

            if($currentpage > 1) 
            {
            $pagelinks.="<a href='$thebaseurl/".$langpage['0']."/".$langpage['31'].".html?".$added."1' class='page'>$lang[611]</a>";
            $pagelinks.="<a href='$thebaseurl/".$langpage['0']."/".$langpage['31'].".html?".$added."$theprevpage' class='page'>$lang[612]</a>";
            };

            $counter=0;

            $lowercount = $currentpage-5;
            if ($lowercount <= 0) $lowercount = 1;

            while ($lowercount < $currentpage)
            {
                $pagelinks.="<a href='$thebaseurl/".$langpage['0']."/".$langpage['31'].".html?".$added."$lowercount' class='page'>$lowercount</a>";
                $lowercount++;
                $counter++;
            }

            $pagelinks.="<span class='current'>$currentpage</span>";

            $uppercounter = $currentpage+1;

            while (($uppercounter < $currentpage+10-$counter) && ($uppercounter<=$toppage))
            {
                $pagelinks.="<a href='$thebaseurl/".$langpage['0']."/".$langpage['31'].".html?".$added."$uppercounter' class='page'>$uppercounter</a>";
                $uppercounter++;
            }

            if($currentpage < $toppage) 
            {

            $pagelinks.="<a href='$thebaseurl/".$langpage['0']."/".$langpage['31'].".html?".$added."$thenextpage' class='page'>$lang[613]</a>";
            $pagelinks.="<a href='$thebaseurl/".$langpage['0']."/".$langpage['31'].".html?".$added."$toppage' title='last page' class='page'>$lang[614]</a>";
            }
        }
    }
    else
    {
        $error = $lang['665'];
    }
}
else
{
    STemplate::assign('pagetitle',$lang['660']);    
}

//TEMPLATES BEGIN
STemplate::assign('mainmenu',4);
STemplate::assign('error',$error);
STemplate::assign('pagelinks',$pagelinks);
STemplate::assign('docs',$docs);
STemplate::display('header.tpl');
STemplate::display('rechercher.tpl');
STemplate::display('footer.tpl');
//TEMPLATES END
?>

我的表格作为参考:

 <form name="sform" id="sform" action="my_search.php" method="get">
                        <div class="form">
                        <table>
                            <tr>
                                    <td class="td">{$lang820} :</td>
                                    <td>
                                        <div class="styled-select">
                                            <select id="mfg" name="mfg">
                                                <option value="">{$lang824}</option>
                                                {insert name=get_doc_mfg assign=listdocmfg}
                                                {section name=o loop=$listdocmfg}                               
                                                <option value="{$listdocmfg[o].MFGID}" {if $mfg eq $listdocmfg[o].MFGID}selected="selected"{/if}>{$listdocmfg[o].name}</option>
                                                {/section}
                                            </select>
                                        </div ><br />
                                    </td>
                                </tr>
                                <tr>
                                    <td class="td">{$lang218} :</td>
                                    <td>
                                        <div class="styled-select">
                                            <select id="category" name="category">
                                                <option value="">{$lang115}</option>
                                                {insert name=get_doc_categories assign=listdoccategories}
                                                {section name=o loop=$listdoccategories}
                                                <option value="{$listdoccategories[o].CATID}" {if $category eq $listdoccategories[o].CATID}selected="selected"{/if}>{$listdoccategories[o].$langpage1}</option>
                                                {/section}
                                            </select>
                                        </div ><br />
                                    </td>
                                </tr>
                                 <tr>
                                    <td class="td">{$lang819} :</td>
                                    <td>
                                        <div class="styled-select">
                                            <select id="type" name="type">
                                                <option value="">{$lang823}</option>
                                                {insert name=get_doc_type assign=listdoctype}
                                                {section name=o loop=$listdoctype}
                                                <option value="{$listdoctype[o].TYPEID}" {if $type eq $listdoctype[o].TYPEID}selected="selected"{/if}>{$listdoctype[o].$langpage1}</option>
                                                {/section}
                                            </select>
                                        </div ><br />
                                    </td>
                                </tr>
                            <tr>
                                <td class="td">{$lang412}:</td>
                                <td>
                                <div class="row">
                                        <div class="text-fieldset">
                                            <input class="text focus" type="text" name="q" id="q" value="{$q}"> 
                                        </div>
                                    </div>
                                </td>
                            </tr>
                            <tr>
                                <td class="td">&nbsp;</td>
                                <td>
                                <br/>
                                <div class="submit-fieldset">
                                        <input class="submit" type="submit" value="{$lang693}">
                                    </div>
                                </td>
                            </tr>
                        </table>
                        </div>
                        </form>

在查询中使用 UPPER 函数。 例如SELECT * FROM table WHERE UPPER(name) LIKE UPPER("%yourtext%");

它将名称值和文本值也转换为大写,因此只比较大写。 例如:如果在你的数据库中有 ExaMple 而你写了 example,它会将它们都转换为 EXAMPLE 并给你匹配。