Django-Haystack 找不到任何字段
Django-Haystack not finding any field
我正在尝试用 django-haystac 和 whoosh 编写一个小搜索引擎。
我改编了他们的教程,我从 JSON 文件创建了我的索引并使用 QueryParser 成功查询它,现在我正在尝试使用他们的视图。
当我尝试访问搜索 url 时:http://127.0.0.1:8000/my_search/ 我收到错误:
索引 'PaperIndex' 必须有一个(且只有一个)带有 document=True 的 SearchField。
如果我删除 search_indexes.py 我可以访问搜索页面,但是当然它不起作用,因为它没有任何索引可供搜索。
通过调试,它似乎没有拾取任何字段,但它确实看到了 class。
我尝试了几种方法,但没有任何效果
我的search_indexes.py:
from haystack import indexes
from my_search.models import Paper
class PaperIndex(indexes.SearchIndex, indexes.Indexable):
"""
This is a search index
"""
title = indexes.CharField(model_attr='title'),
abstract = indexes.CharField(document=True,
use_template=False, model_attr='abstract'),
def get_model(self):
return Paper
def index_queryset(self, using=None):
"""Used when the entire index for model is updated."""
return self.get_model().objects # .filter(
pub_date__lte=datetime.datetime.now())
我的models.py:
from django.db import models
class Paper(models.Model):
paper_url = models.CharField(max_length=200),
title = models.CharField(max_length=200),
abstract = models.TextField()
authors = models.CharField(max_length=200),
date = models.DateTimeField(max_length=200),
def __unicode__(self):
return self.title
谢谢!
Haystack 为 document=True
字段使用了一个额外的字段。
text = indexes.CharField(document=True)
不在模型上,haystack 在那里转储了一堆可搜索的文本。
Haystack 提供了一个辅助方法 prepare_text()
来填充此字段。或者,可以使用模板方法,它只是一个 txt 文件,上面有 django 模板样式模型属性。
class PaperIndex(indexes.SearchIndex, indexes.Indexable):
"""
This is a search index
"""
text = indexes.CharField(document=True)
title = indexes.CharField(model_attr='title'),
abstract = indexes.CharField(model_attr='abstract'),
def get_model(self):
return Paper
def index_queryset(self, using=None):
"""Used when the entire index for model is updated."""
return self.get_model().objects # .filter(
pub_date__lte=datetime.datetime.now())
我正在尝试用 django-haystac 和 whoosh 编写一个小搜索引擎。 我改编了他们的教程,我从 JSON 文件创建了我的索引并使用 QueryParser 成功查询它,现在我正在尝试使用他们的视图。
当我尝试访问搜索 url 时:http://127.0.0.1:8000/my_search/ 我收到错误:
索引 'PaperIndex' 必须有一个(且只有一个)带有 document=True 的 SearchField。
如果我删除 search_indexes.py 我可以访问搜索页面,但是当然它不起作用,因为它没有任何索引可供搜索。
通过调试,它似乎没有拾取任何字段,但它确实看到了 class。
我尝试了几种方法,但没有任何效果
我的search_indexes.py:
from haystack import indexes
from my_search.models import Paper
class PaperIndex(indexes.SearchIndex, indexes.Indexable):
"""
This is a search index
"""
title = indexes.CharField(model_attr='title'),
abstract = indexes.CharField(document=True,
use_template=False, model_attr='abstract'),
def get_model(self):
return Paper
def index_queryset(self, using=None):
"""Used when the entire index for model is updated."""
return self.get_model().objects # .filter(
pub_date__lte=datetime.datetime.now())
我的models.py:
from django.db import models
class Paper(models.Model):
paper_url = models.CharField(max_length=200),
title = models.CharField(max_length=200),
abstract = models.TextField()
authors = models.CharField(max_length=200),
date = models.DateTimeField(max_length=200),
def __unicode__(self):
return self.title
谢谢!
Haystack 为 document=True
字段使用了一个额外的字段。
text = indexes.CharField(document=True)
不在模型上,haystack 在那里转储了一堆可搜索的文本。
Haystack 提供了一个辅助方法 prepare_text()
来填充此字段。或者,可以使用模板方法,它只是一个 txt 文件,上面有 django 模板样式模型属性。
class PaperIndex(indexes.SearchIndex, indexes.Indexable):
"""
This is a search index
"""
text = indexes.CharField(document=True)
title = indexes.CharField(model_attr='title'),
abstract = indexes.CharField(model_attr='abstract'),
def get_model(self):
return Paper
def index_queryset(self, using=None):
"""Used when the entire index for model is updated."""
return self.get_model().objects # .filter(
pub_date__lte=datetime.datetime.now())