使用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 }}
不過,我打算讓用戶設置他們的隱私設置,使他們不能使用它們的名字,姓氏或電子郵件地址進行搜索。
我一直在砸我的腦袋和我的電腦幾天試圖完成此功能,但還沒有找到任何真正的好的解決方案呢。
完全可以完成上述功能嗎?
非常感謝您提前。
這取決於你的架構:如果他們有到Solr直接訪問,或者如果他們訪問過您已經內置在你的服務器的服務層。 – Eduardo
就像愛德華多所說的那樣。但是,如果這不是一個計算機產品,而是一個Web服務,最終用戶無法訪問數據庫。你可以做'exclude(username ='root'或searchable = False'),其中'searchable'是你類中的一個新字段(db屬性)。我認爲這應該工作...並且默認情況下,根據此搜索查詢的目的,您可以使其可搜索或不搜索。除此之外,我不明白你的問題,如果我錯了... – CppLearner