【发布时间】:2012-06-25 15:47:41
【问题描述】:
我正在阅读这里的文档和一些问题,但不明白如何返回包含在两个不同类中索引的字段的查询。让我把代码放在下面:
这里有课程:
class T031003Index(RealTimeSearchIndex):
text = CharField(document=True, use_template=True)
C003INST = IntegerField(model_attr='C003INST')
C003CHCD = CharField(model_attr='C003CHCD')
C003MTR = CharField(model_attr='C003MTR')
C003RZSC = CharField(model_attr='C003RZSC')
def index_queryset(self):
return T031003.objects.all()
def prepare(self, obj):
self.prepared_data = super(T031003Index, self).prepare(obj)
self.prepared_data['text'] = obj.C003CHCD
return self.prepared_data
site.register(T031003, T031003Index)
第二个:
class T031002Index(RealTimeSearchIndex):
text = CharField(document=True, use_template=True)
C002USER = CharField(model_attr='C002USER')
def index_queryset(self):
return T031002.objects.all()
def prepare(self, obj):
self.prepared_data = super(T031002Index, self).prepare(obj)
self.prepared_data['text'] = obj.C002USER
return self.prepared_data
site.register(T031002, T031002Index)
我有两个模板索引,每个索引都有:
T031003_text:
{{ object.C003INST }}
{{ object.C003CHCD }}
{{ object.C003MTR }}
{{ object.C003RZSC }}
T031002_text:
{{ object.C002USER }}
{{ object.C002INST }}
我的模板代码:
{% if page.object_list %}
{% for object in page.object_list %}
<br>
<li><font class="font">
{{ object.C003RZSC }}, {{ object.C003INST }}, {{ object.C003CHCD }}, {{ object.C003MTR }}, {{ object.C002USER }}
</li>
{% endfor %}
我的看法:
def search(req):
return SearchView(template='search.html')(req)
如果我在搜索框中输入一个字段的值,比如说属于 T031002Index 类(如 user = "vane"),它会给我结果:
“无,无,无,无,风向标”
而且,如果我从 T031003Index 类的字段中输入一个值,它会给我结果:
“铅笔,1,教材,一般,无”
我在models.py的这两个类之间有一个外键字段,即C002INST。
你们能给我解释一下吗?看起来很简单,但我自己想不出来。
提前致谢!
【问题讨论】:
-
我现在正在阅读 Haystack 的索引页面,有一些东西引起了我的注意:“同时,2.0.0-alpha 的工作已经成功,包括期待已久的多索引支持。类似于 Django 的 multidb 支持,这将允许您同时与多个搜索引擎对话。诸如主从设置、用于自动完成的单独引擎或拆分面向公众/仅限管理员的搜索之类的事情现在变得微不足道……”是这样吗?如果我不使用 2.0 Haystack 版本,我无法按照我的问题做我的计划?
标签: indexing django-haystack whoosh