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

时间:2016-06-29 16:45:55

标签: php search full-text-search

我的数据库中保存了自动填充选项。我的搜索以精确的方式给出结果,因为它是我需要它的方式。全文。 但是当涉及到搜索时,我想从每个搜索过的单词中修剪最后2个字符。即使搜索查询由多个单词组成。

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

实施例

你输入什么:1。bonita chicita 2. nice girlie

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

1 个答案:

答案 0 :(得分:0)

现在我将回答如何修剪所提供的每个单词的最后2个字符,并在新信息出现时更新答案。

$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个字符,因此可以在$array[$i] .= '%'之后添加substr(),然后使用新的通配字符串进行搜索数据库。

我在SQL Fiddle尝试了这个,但它似乎有效。