0

簡単なキーワード検索が必要です。

一連のキーワードが関連付けられているオブジェクトがあります。これらのキーワードを確実に検索する方法が必要です。

一連のキーワードを検索した後、検索ライブラリはこれらのキーワードに関連付けられたオブジェクトの ID を返す必要があります。さらに、完全に一致するかどうかを知る必要があります (検索されたすべてのキーワードが [オブジェクトに関連付けられた] 単一のセットで表示されます)。

複数の OR 演算子を使用してクエリを作成することは避けたいです。

これを達成する方法をいくつかのライブラリまたはチュートリアルに教えてもらえますか?

4

1 に答える 1

2

私はphpタグしか見ていないので、DBは関係ないと思います。あなたが述べたように、それはオブジェクトのリストです。

DBがない場合にクエリを作成するという意味がよくわかりませんが、質問は少し不明です。

これは、あなたが話しているオブジェクトのクラスだと思います:

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)
于 2013-04-25T12:34:24.400 に答える