例如,如果我有这个:
巴拉克侯赛因奥巴马是现任总统的第44任总统 的状态。
我想搜索Barack Obama
,我的搜索不会带来任何结果。
PHP
$q=$_POST['search'];
$q= '%' . $q . '%';
$stmt = $mysqli->prepare("
select id, titulo, fotos from posts where titulo like ? order by id desc LIMIT 150
");
$stmt->bind_param('s', $q);
MySQL的:
select id, titulo, fotos from posts where titulo like '%barack obama%' order by id desc LIMIT 150
如何搜索barack obama
或barack president
并获得结果?
答案 0 :(得分:1)
你想要的不是一个简单的SQL查询。让我试着让它尽可能简单。我猜你不知道natural language processing
这是nice library同样的问题。现在您有一个搜索查询和许多要搜索的内容。
首先,您找到查询的主题。例如,Who is barack
之类的查询不应搜索who
和is
,而只能搜索barack
。这将为您返回几个可以使用的关键字。
接下来,您需要在文档中找到它们并根据优先级对结果进行排名。很多因素都可以起到同样的作用,为了简单起见,只需在文档中制作关键字的热图。就像具有更多barack
的文档一样,优先级更高。
如果有多个关键字,例如barack
和president
,我想最简单的方法就是不进行机器学习。
现在搜索不是您可以根据要求执行的操作。这是一个连续的过程,我建议有一个cron作业,不断解析每个文档并从中提取关键字。将这些关键字保存在文档中,以便以后根据查询进行匹配。
最后,这只是一种简单的方法,并且有相同的方法。如果您想以某种方式收集用户数据以判断结果是否有用并且下次使用它以将其置于更高的搜索等级,则可以。 Here是我觉得有趣的东西,我想这会让你更好地了解这个过程。
如果你想要更简单的东西,你可以爆炸搜索术语并对所有这些术语运行sql查询,最后给予在更多搜索中返回的内容更高的优先级。