2012-10-13 47 views
0

使用django-haystack和solr作爲搜索引擎,我成功實現了一個搜索引擎,它將用戶名,名字,姓氏或電子郵件地址匹配給定的用戶列表查詢。使數據庫對象不可搜索

search_indexes.py

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

{{ object.username }} 
{{ object.first_name }} 
{{ object.last_name }} 
{{ object.email }} 

不過,我打算讓用戶設置他們的隱私設置,使他們不能使用它們的名字,姓氏或電子郵件地址進行搜索。

我一直在砸我的腦袋和我的電腦幾天試圖完成此功能,但還沒有找到任何真正的好的解決方案呢。

完全可以完成上述功能嗎?

非常感謝您提前。

+0

這取決於你的架構:如果他們有到Solr直接訪問,或者如果他們訪問過您已經內置在你的服務器的服務層。 – Eduardo

+0

就像愛德華多所說的那樣。但是,如果這不是一個計算機產品,而是一個Web服務,最終用戶無法訪問數據庫。你可以做'exclude(username ='root'或searchable = False'),其中'searchable'是你類中的一個新字段(db屬性)。我認爲這應該工作...並且默認情況下,根據此搜索查詢的目的,您可以使其可搜索或不搜索。除此之外,我不明白你的問題,如果我錯了... – CppLearner

回答