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