0

我需要简单的关键字搜索。

我有与它们相关联的一组关键字的对象。我需要可靠搜索这些关键字的方法。

在搜索了一组关键字后,搜索库应该返回与这些关键字关联的对象的 id。另外我需要知道是否有完全匹配(所有搜索的关键字都以单个集合[与对象关联]的形式呈现)。

我想避免使用多个 OR 运算符构建查询。

你能指点我一些图书馆或教程如何实现这一目标吗?

4

1 回答 1

2

因为我只看到一个 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)
于 2013-04-25T12:34:24.400 回答