我试图阻止用户使用产生太多结果的术语进行搜索。
例如,我希望用户能够搜索"Big Island"
,但不能搜索"Island"
。
我试过了:
$array = array("island", "islands", "island's", "islet", "ilsets", "reef", "reefs", "shoal", "shoals");
if (0 < count(array_intersect(array_map('strtolower', explode(' ', $searchTerm)), $array)))
{
echo "No results. The search term used was too general.";
exit();
}
但是这会停止搜索任何带有停用词的短语。
我想我正在寻找类似的东西:
如果字符串包含这个单词或那个单词(并且只有其中一个单词!)停止你正在做的事情,那么继续......
答案 0 :(得分:0)
查看它可能对你有帮助的strstr函数http://php.net/manual/en/function.strstr.php
答案 1 :(得分:0)
在删除“停止词”之后可能会查看搜索,这些词是“the”和“等”。所以删除“停用词”,然后检查搜索字符串是否为空。另外,请务必将其他单词添加到停用词列表中。
答案 2 :(得分:0)
答案 3 :(得分:0)
为什么不尝试使用正则表达式 - 这是一个简单的演示。您当然可以从预定义数组生成字符组(大|小)等
$regex = '/^(big|small)\s+(Island|islet|reef)$/';
if ( 1 === preg_match($regex, 'big reef ') {...}
答案 4 :(得分:0)
也许让用户搜索然后在Google上显示“相关搜索”...