【问题标题】:What is the concept behind "text" withiin Haystack SearchIndexHaystack SearchIndex中“文本”背后的概念是什么
【发布时间】:2014-11-12 23:09:25
【问题描述】:

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 文档示例/它在查询中的样子,那将非常有帮助。

【问题讨论】:

    标签: django solr django-haystack


    【解决方案1】:

    您可以在 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,你可以在你的anymodel_text.txt 中使用它来存储Haystack模型的text字段中原始字段的文本

    • search_indexes.py中添加的字段用于Haystack模型,不需要在您的模型中存在,您可以添加新字段。搜索时该字段将存在于 SearchQuerySet 对象中

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-17
      • 1970-01-01
      • 2011-01-15
      • 2022-01-10
      • 1970-01-01
      • 1970-01-01
      • 2012-03-20
      相关资源
      最近更新 更多