首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >全文搜索只包含正确的单词

全文搜索只包含正确的单词
EN

Stack Overflow用户
提问于 2014-09-24 13:17:48
回答 2查看 67关注 0票数 0

我正在使用full-text-search编写搜索函数,我希望只有当输入的单词包含在表中时,才能显示结果。

代码语言:javascript
复制
$search_value = $db->mysqli->real_escape_string("lana born to die sdkjfhsdkjfhdsjkfhdsjkfhd");

$query = "select * from `music` where match(`title`, `artist`) against ('$search_value')";
代码语言:javascript
复制
artist               title
----------------------------------
lana del rey    west coast
lana del rey    born to die
lana del rey    summertime sadness
lana del rey    blue jeans

为了前夫。如果我搜索:lana born to die sdkjfhsdkjfhdsjkfhdsjkfhd,结果会显示lana del rey born to die。这种情况不应该发生。我想要它显示结果,只有当你键入前。lanalana del rey born等。

任何想法。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-24 13:26:24

您可以将查询转换为布尔全文搜索。这是通过在搜索查询中的每个单词前面添加一个+或-来完成的。

在这种情况下,我们将a+加为a,而a-则表示非。

因此,如果希望使每个单词都成为必需的,则可以添加以下代码:

PHP:

代码语言:javascript
复制
$search_value = $db->mysqli->real_escape_string("lana born to die sdkjfhsdkjfhdsjkfhdsjkfhd");
$search_value = str_replace(" ", " +", $search_value);
$query = "select * from `music` where match(`title`, `artist`) against ('$search_value' IN BOOLEAN MODE)";
票数 3
EN

Stack Overflow用户

发布于 2014-09-24 13:28:04

您需要更正您的查询:

代码语言:javascript
复制
$query = "select * from `music` where `title` LIKE '%$search_value%'  
          OR `artist` LIKE '%$search_value%'";

我希望这会对你有帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26017973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档