在全文搜索中修剪单词的最后一个字符



我在DB中保存了自动完成选项。我的搜索是以书面形式确切的结果,这是我需要的方式。全文。但是,在搜索方面,我想从每个搜索单词中修剪最后2个字符。即使搜索查询是由多个单词组成的。

问题在于我的母语,它在形容词中使用不同的最后1-2个字符,具体取决于名词的性别。交易是,用户不必键入不同的形容词才能获得不同的结果,但是无论他在形容词中键入哪种方式,他都会获得所有相同的结果。这是可能的吗?

示例

您输入的内容:1。Bonita Chicita 2.好少女

全文搜索:1。Boni Chici 2. Ni Girl

现在,我将回答如何修剪每个单词的最后两个字符,并在新信息通过时更新答案。

$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小提琴上尝试了此操作,并且似乎有效。

最新更新