2016-07-12 6 views
1

누구든지 키 대신 Aerospike LLIST 필터를 필터링하고 PHP를 사용하여 모든 결과를 반환하는 방법을 보여줄 수 있습니까?Aerospike 필터링 LLIST

필자의 경우 bin 'notes'에는 키, 제목, desc & 카테고리의 많은 행이 포함되어 있습니다. 다음 코드를 사용하여 모든 행을 검색 할 수 있지만 범주에 대한 필터를 수행하고 동일한 범주 내의 결과 만 가져와야합니다. udf가 필요한 경우 udf 코드도 표시하고 결과를 얻기 위해 필터를 적용하는 방법을 알려주십시오.

$db = new Aerospike($config, false);<br/> 
$key = $db->initKey('mynamespace', 'myset', $userid);<br/> 
$list = new \Aerospike\LDT\LList($db, $key, 'notes');<br/> 
$status = $list->scan($results); 

답변

0

에 의해 호출됩니다.

local category_filters = {} 
    function category_filters.filterBy(element,val)    
    if element['category'] == val[1] then 
    return element 
    else 
    return nil 
    end 
end 
return category_filters 

$status = $list->scan($results, 'category_filters', 'filterBy', array($category)); 
에 의해 불려갑니다
2

LList.scan있어서 각 요소를 필터링 루아 함수를 호출 할 수 있도록 선택적 모듈 이름, 파라미터의 함수 이름 쌍을 갖는다.

example Lua 모듈을 호출하는 클라이언트의 repo, 제공된 example PHP script있다 :

function keyfilters.even_filter(element) 
    local remainder = -1 
    if type(element) == "number" then 
     remainder = element % 2 
    elseif (getmetatable(element) == getmetatable(map())) and element['key'] then 
     remainder = element['key'] % 2 
    end 
    if remainder == 0 then 
     return element 
    else 
     return nil 
    end 
end 

은 다음과 작동으로 UDF를 수정 관리

$rental_history->scan($elements, 'keyfilters', 'even_filter'); 
관련 문제