2012-10-13 3 views
0

django-haystack 및 solr을 검색 엔진으로 사용하여 사용자 이름, 이름, 성 또는 전자 메일 주소가 지정된 사용자 목록을 삭제하는 검색 엔진을 성공적으로 구현했습니다 질문.데이터베이스 개체를 검색 할 수 없도록 만듭니다.

search_indexes.py

그러나
{{ object.username }} 
{{ object.first_name }} 
{{ object.last_name }} 
{{ object.email }} 

, 나는 사용자가 자신의 개인 정보 설정을 설정할 수 있도록 할 계획입니다

from haystack.indexes import * 
from haystack import site 

from django.contrib.auth.models import User 

class UserIndex(SearchIndex): 
    text = CharField(document=True, use_template=True) 
    first_name = CharField(model_attr='first_name') 
    last_name = CharField(model_attr='last_name') 
    email = CharField(model_attr='email') 

    def index_queryset(self): 
     return User.objects.exclude(username='root') 

site.register(User, UserIndex) 

user_text.txt가 있도록 first_name, last_name 또는 이메일 주소로 검색 할 수 없습니다.

나는이 기능을 수행하는 데 며칠 동안 머리와 컴퓨터를 두들기는했지만 실제로 좋은 해결책을 찾지 못했습니다.

위의 기능을 모두 수행 할 수 있습니까?

대단히 감사합니다.

+0

그것은 당신의 아키텍처에 따라 다릅니다 그들은 SOLR에 직접 액세스 할 수있는 경우, 또는 당신이 당신의 서버에 구축 한 서비스 계층을 통해 액세스합니다. – Eduardo

+0

Eduardo가 말한 것과 같습니다. 그러나 이것이 컴퓨터 제품이 아니라 웹 서비스 인 경우 최종 사용자는 db에 액세스 할 수 없습니다. 클래스에서'searchable'이 새로운 필드 (db 애트리뷰트) 인 곳에'exclude (username = 'root'또는 searchable = False)'를 할 수 있습니다. 나는 그것이 작동해야한다고 생각합니다 ... 그리고 기본적으로,이 검색 쿼리의 목적에 따라, 당신은 그것을 검색 가능하게 만들지 않을 수 있습니다. 그 외, 내가 틀렸다면 나는 당신의 질문을 정말로 이해하지 못합니다 ... – CppLearner

답변

1

제약 테이블을 생성 할 수 있습니다. haystack의 SearchQuerySet을 사용하여 제외하십시오. 다음은 tastypie를 API로 사용하는 예입니다.하지만 맞춤 서비스 나 뷰 레이어 일 수도 있습니다.

http://django-tastypie.readthedocs.org/en/latest/resources.html#advanced-filtering

+0

안녕하세요, Hedde, 제가 정확히 필요한 것을 가르쳐 주셔서 감사합니다! 당신은 최고입니다. –

관련 문제