0
我需要简单的关键字搜索。完全匹配的简单关键字搜索
我有与他们关联的关键字集的对象。我需要通过可靠的方式搜索这些关键字。
搜索一些关键字集合后,搜索库应该返回与这些关键字相关联的对象的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.
}
现在让我们假设它是DB与如下因素表相关:
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)
myisam类型的Mysql表,您的字段上的全文索引并使用MATCH() – Dave 2013-04-25 12:14:33