2013-06-28 2 views
1

검색 결과를 자동 완성하기 위해 Soulmate를 사용하지만 검색 필드에 다시 나타나지 않도록 잠시 후에 레코드를 삭제할 수 있기를 바랍니다. Soulmate와 함께 목록을 새로 고침하는 것은 약간 해킹되고 불필요한 것처럼 보입니다.Rails, Soulmate, Redis 레코드를 삭제합니다.

나는로드 JSON을 사용하고 난 유일한 기록 "ID"는 늘 다시 검색 결과에 표시되도록

{"id":1547,"term":"Foo Baar, Baaz","score":85} 

어떻게 레디 스에서 그 기록을 삭제할 수 있나요?

답변

1

redis-cli 명령을 사용하여 Redis에서 직접 수행하는 것은 쉽지 않습니다. 소울 코드를 찾고 , 상기 데이터 구조는 다음과 같다 :

  • 소울 굴절률 [형태] 해시 객체가 함유 [형태] 집합 소울 데이터가

  • 모든 접두사를 포함 id와 json 객체 사이의 연관성.

    접두사 당
  • 하는 소울 메이트 인덱스 : [유형] :

    Retrieve the json object from its id (you already did it) -> id 1547 
    HDEL soulmate-data:[type] 1547 
    Generate all the possible prefixes from "Foo Baar, Baaz" 
    For each prefix: 
        SREM soulmate-data:[type] [prefix] 
        ZREM soulmate-index:[type]:[prefix] 1547 
    
    : [접두사]

그래서 항목을 삭제 (점수 및 ID로) 소트 세트, 당신은 필요

아마도 Soulmate.Loader 클래스에 제공된 remove 메소드를 Ruby 스크립트에서 직접 호출하는 것이 더 쉬울 것입니다.이 스크립트는 모든 것을 자동화합니다.

https://github.com/seatgeek/soulmate/blob/master/lib/soulmate/loader.rb

+0

그래, 나는 Soulmates Loader class = – Philip

관련 문제