2010-12-03 1 views
0

내 소프트웨어 사용자는 태그를 할당하기 위해 기존 태그 (자동 완성에 채워짐)를 검색합니다. 스핑크스에서이 검색의 색인을 생성하여 태그 검색이 매우 민감합니다. 해당 태그 이름을 가진 모든 개체를 찾으려고 할 때 도움이되는 index a Model's tags with sphinx에 대한 게시물을 보았지만 기존 태그를 검색하는 사람들을 위해 태그 검색 자체를 색인하려고합니다. 나는이 검색ThinkingSphinx 색인 ActsAsTaggable Model.tag_counts

Lead.tag_counts에 대한 스핑크스를 사용하는 것을 시도하고있다

(: 조건 => [ "tags.name 좋아? ','회계 % '])

어떤 는 SQL에게 LEFT 외부 tags.id ON taggings 가입 tags FROM 카운트 AS

SELECT tags.id, tags.name, COUNT ()를 생성 = taggings.tag_id는 AND taggings.context = '태그'INNER는 leads.id = taggings.taggable_id ON 리드를 가입 WHERE ((taggings.taggable_type = '리드'와 tags.name '회계 %')와 같은) GROUP tags.id BY , tags.name HAVING COUNT ()

0

나는 아래가 작동 할 수 있도록 태그 모델에 인덱스를 추가 할 수 있다고 가정하지만, 꽤을 그들이해야 할 일을 확실히하십시오.

Tag.sphinx_leads_scope.search (PARAMS [: 태그])

감사합니다, 존 폴

답변

0

감안할 때 acts-as-taggable-on이 조금 까다로운 얻을 수 있지만 경우에 자신의 태그 클래스가 (? 이니셜 라이저에서 아마) 어딘가에서이 코드를 넣어, 나는 일을해야한다고 생각 -이 검증되지 않은 비록 :

ActsAsTaggableOn::Tag.define_index do 
    indexes name 
end 

는 스핑크스의 범위가 까다 롭습니다 추가 - 당신은 것 N ActsAsTaggableOn :: 태그를 monkeypatch하려면 eed를 클릭하십시오. 확실히 질문에서. taggings를 통해 taggable 유형에 대한 필터를 추가 할 수도 있습니다 ... 문자열 필터가 매우 제한되어 있지만 - read the docs을 확인하십시오. 또한, 문자열 필터 경로를 내려가는 경우 태그에 대해 여러 태그 지정 유형이 지정 될 수 있으므로 CRC32 값을 쉼표로 연결해야합니다. 체크 아웃 this somewhat related answer (코드 스 니펫).