" text"背后的概念是什么? withiin Haystack SearchIndex

时间:2014-11-12 23:09:25

标签: django solr django-haystack

来自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文档示例/它在查询中的外观,那将会非常有用。

1 个答案:

答案 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 模型,并且不需要存在于模型中,您可以添加新字段。搜索

  • 时,此字段将存在于 SearchQuerySet 对象中