Trim 全文搜索中单词的最后一个字符

Trim last characters of word in full text search

我的数据库中保存了自动完成选项。我的搜索以准确的方式给出结果,这正是我需要的方式。全文。 但是当涉及到搜索时,我想 trim 每个搜索词的最后 2 个字符。即使搜索查询由多个词组成。

问题出在我的母语上,它根据名词的性别在形容词中使用不同的最后 1-2 个字符。交易是用户不必键入不同种类的形容词来获得不同的结果,但是无论他以何种方式键入形容词,他都将获得所有相同的结果。这可能吗?

例子

您输入的内容:1. bonita chicita 2. nice girlie

搜索全文:1. boni chici 2. ni girl

现在我将回答如何 trim 关闭每个提供的单词的最后 2 个字符,并将更新答案 as/when 收到新信息。

$string = 'bonita chicita';
$array = explode(' ', $string); // Adds each word into an array

// Loop through each word in the array and remove the last 2 characters
for($i=0; $i<count($array); $i++) {
    $array[$i] = substr($array[$i], 0, strlen($array[$i])-2) . '%'; // For adding wildcards in place of the 2 removed characters
}

// Recreate the string from the array
$newString = implode(' ', $array);

// This will now echo boni chici
echo $newString;

您也可以将其放入函数中以供多次使用。

function editString($string) {
    $array = explode(' ', $string); 

    for($i=0; $i<count($array); $i++) {
        $array[$i] = substr($array[$i], 0, strlen($array[$i])-2) . '%'; // For adding wildcards in place of the 2 removed characters
    }

    return implode(' ', $array);    
}

echo editString("bonita chicita"); // echos boni chici

为了根据您的数据库设计方式进行搜索,您需要使用 % 通配符代替删除的 2 个字符,因此可以在 substr() 之后添加 $array[$i] .= '%' 然后使用新的通配符字符串搜索数据库。

我在 SQL Fiddle 上尝试过,它似乎有效。