我需要简单的关键字搜索。
我有与它们相关联的一组关键字的对象。我需要可靠搜索这些关键字的方法。
在搜索了一组关键字后,搜索库应该返回与这些关键字关联的对象的 id。另外我需要知道是否有完全匹配(所有搜索的关键字都以单个集合[与对象关联]的形式呈现)。
我想避免使用多个 OR 运算符构建查询。
你能指点我一些图书馆或教程如何实现这一目标吗?
我需要简单的关键字搜索。
我有与它们相关联的一组关键字的对象。我需要可靠搜索这些关键字的方法。
在搜索了一组关键字后,搜索库应该返回与这些关键字关联的对象的 id。另外我需要知道是否有完全匹配(所有搜索的关键字都以单个集合[与对象关联]的形式呈现)。
我想避免使用多个 OR 运算符构建查询。
你能指点我一些图书馆或教程如何实现这一目标吗?
因为我只看到一个 php 标签,所以我认为不涉及任何数据库。但它是您所说的对象列表。
我不太清楚你在没有数据库时构建查询是什么意思,但问题有点不清楚。
我假设这是您正在谈论的对象的类:
class SomeObject
{
private $id;
private $keywords = array();
public function getId()
{
return $this->id;
}
public function getKeywords()
{
return $this->keywords;
}
}
那么这将是解决方案:
function filterObjectArray($objectArray, $search)
{
$resultIds = array();
$resultObjects = array();
foreach ($objectArray as $object)
{
foreach ($object->getKeywords() as $keyword)
{
if ($search == $keyword)
{
$resultIds[] = $object->getId();
$resultObjects[] = $object;
break;
}
}
}
return $resultObjects;
// or you could do return $resultIds; But i think returning the objects is a nicer solution.
}
现在让我们假设它是与下表相关的数据库:
someobject
\ id
\ name
\ etc
keywords
\ id
\ keyword
\ someobjectid
那么它只是:
select
id
from someobject o
where
exists (select 1 from keywords k where k.keyword = 'thekeywordiamlookingfor' and k.objectid = someobject.id)