来自http://django-haystack.readthedocs.org/en/latest/tutorial.html
的示例class NoteIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True)
author = indexes.CharField(model_attr='user')
pub_date = indexes.DateTimeField(model_attr='pub_date')
它说 "每个SearchIndex都要求有一个(且只有一个)字段,其中document = True。这向Haystack和搜索引擎指示哪个字段是在其中搜索的主要字段。"
这是否意味着它与Solr的唯一ID是一回事? 如果有人能够详细说明Solr文档示例/它在查询中的外观,那将会非常有用。
答案 0 :(得分:2)
您可以在Haystack / ES中添加任意数量的字段,但是唯一存储用于搜索的文本的字段是具有document=True
的字段,而对于标准化,该字段的默认名称是"文字"
使用Haystack需要的另一个文件是
templates/search/indexes/project/anymodel_text.txt
您将在此文件中添加要搜索文本的模型字段,此anymodel_text.txt
文件应如下所示:
{{ object.name }}
{{ object.description }}
{{ object.last_name }}
# Or any other field that belongs to your model
此文字将存储在您要求
的字段text
中
您在此anymodel_text.txt
中添加的字段不需要位于search_indexes.py
,此处使用的字段属于您的模型,原始字段:
例如:如果您的模型中有一个名为description的文件,并且您没有将其添加到 search_indexes.py中,则可以在{{1}中使用它}将原始字段的文本存储在Haystack模型的 text 字段中
anymodel_text.txt
中添加的字段适用于 Haystack 模型,并且不需要存在于模型中,您可以添加新字段。搜索