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 上尝试过,它似乎有效。
我的数据库中保存了自动完成选项。我的搜索以准确的方式给出结果,这正是我需要的方式。全文。 但是当涉及到搜索时,我想 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 上尝试过,它似乎有效。