运行rebuild_index时,来自其他应用程序的对象正在被索引,但在一个应用程序上发生SearchFieldError。
这是我的相关应用程序的 models.py :
class Doctor(models.Model):
SPECIALTY_CHOICES = (
('Pediatric Physiotherapist', 'Pediatric Physiotherapist')
)
user = models.OneToOneField(User, null=True, blank=True, on_delete=models.CASCADE)
doctorName = models.CharField(max_length=100)
doctorQual = models.CharField(max_length=500)
doctorSpecial = models.CharField(choices=SPECIALTY_CHOICES, default='', max_length=50)
doctorSummary = models.CharField(max_length=1000)
doctorLocation = models.CharField(max_length=100, default=' ', null=True, blank=True)
slug = models.SlugField(null=True, blank=True)
city = models.CharField(max_length = 100, null=True, blank=True)
def __str__(self):
return self.doctorName
# save method overridden to generate slug for each object
def save(self, *args, **kwargs):
self.slug = slugify(self.doctorName)
super(Doctor, self).save(*args, **kwargs)
def get_absolute_url(self):
return "/doctor/doc_detail_page/%i" …Run Code Online (Sandbox Code Playgroud) 您好,当尝试将 django 应用程序部署到 elastic beanstalk 时,会出现此错误,
DistutilsError: Could not find suitable distribution for Requirement.parse('setuptools-scm')
Run Code Online (Sandbox Code Playgroud)
我尝试在我的requirements.txt 文件甚至我的.ebextension 目录中添加库setuptools-scm,但仍然没有任何建议?
编辑,这是错误的完整日志:
Application deployment failed at 2021-05-18T23:56:56Z with exit status 1 and error: Hook /opt/elasticbeanstalk/hooks/appdeploy/pre/03deploy.py failed. Collecting Django==1.11.16 Using cached Django-1.11.16-py2.py3-none-any.whl (7.0 MB) Collecting django-oscar==1.6.4 Using cached django_oscar-1.6.4-py2.py3-none-any.whl (7.5 MB) Collecting psycopg2==2.7.3.2 Using cached psycopg2-2.7.3.2-cp36-cp36m-manylinux1_x86_64.whl (2.7 MB) Collecting openpyxl==2.4.10 Using cached openpyxl-2.4.10.tar.gz (158 kB) Collecting django-storages==1.6.5 Using cached django_storages-1.6.5-py2.py3-none-any.whl (47 kB) Collecting boto3==1.5.19 Using cached boto3-1.5.19-py2.py3-none-any.whl (128 kB) Collecting django-ipware==2.0.1 Using cached django-ipware-2.0.1.tar.gz (10 …
setuptools django-haystack python-3.x amazon-elastic-beanstalk
我正在使用django-haystack在我的网站上搜索.我也在为I18n 使用django多语言模型.我在search_indexes.py中导入MultilingualModel
只要我在INSTALLED_APPS中没有haystack,我就可以运行所有管理命令.
当haystack在INSTALLED_APPS中并尝试运行syncdb或migrate(以及其他几个管理命令)时,我总是得到:
django.core.exceptions.ImproperlyConfigured: ImportError haystack: cannot import name MultilingualModel
Run Code Online (Sandbox Code Playgroud) 我是Solr的新手并且没有Java技能,所以也许我错过了一些东西......我试图让Solr从内容中剥离HTML,使用以下CharFilter:
http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.HTMLStripCharFilterFactory
这就是我将它包含在schema.xml中的方式:
<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<charFilter class="solr.HTMLStripCharFilterFactory"/>
<tokenizer class="solr.StandardTokenizerFactory"/>
</analyzer>
<analyzer type="query">
<charFilter class="solr.HTMLStripCharFilterFactory"/>
<tokenizer class="solr.StandardTokenizerFactory"/>
</analyzer>
</fieldType>
<fields>
<field name="text" type="text" indexed="true" stored="true" multiValued="false" />
</fields>
Run Code Online (Sandbox Code Playgroud)
如果我使用Solr管理面板上的分析器查询"d'Hèrcules",我会得到一个匹配项(请参阅字段):
<doc>
<long name="comment_count">0</long>
<str name="ct_model_name">theatre</str>
<str name="django_ct">timeout.work</str>
<str name="django_id">2535</str>
<bool name="family">false</bool>
<long name="hits">0</long>
<str name="id">timeout.work.2535</str>
<str name="name">Les aventures d'Hèrcules</str>
<arr name="parent_sections">
<str>Escena</str>
</arr>
<long name="rating">0</long>
<bool name="recommended">false</bool>
<arr name="sections">
<str>Escena - Infantil</str>
</arr>
<str name="text">
Les aventures d'Hèrcules Jordi Andújar <p>Prepareu-vos per viatjar a l’antiga Grècia on coneixereu …Run Code Online (Sandbox Code Playgroud) Django Haystack 文档说:
**Warning**
When you choose a document=True field, it should be consistently named across all of your SearchIndex classes to avoid confusing the backend. The convention is to name this field text.
There is nothing special about the text field name used in all of the examples. It could be anything; you could call it pink_polka_dot and it won’t matter. It’s simply a convention to call it text.
Run Code Online (Sandbox Code Playgroud)
但我不明白这意味着什么.这是他们的示例模型:
从myapp.models import中的haystack导入索引导入datetime
class NoteIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, …Run Code Online (Sandbox Code Playgroud) 为了解决没有"FileStorage"属性问题,我只是更新了嗖的一声.但是,它带来了这个新问题.
from whoosh.spelling import SpellChecker
ImportError: cannot import name SpellChecker
Run Code Online (Sandbox Code Playgroud) 我在我们的django应用程序中使用haystack进行搜索和搜索工作非常好.但是我遇到了reamtime搜索的问题.对于实时搜索,我使用haystack的默认RealTimeSignalProcessor(haystack.signals.RealtimeSignalProcessor).我的模型中包含一个多对多的字段.当仅针对此多对多字段更改数据时,似乎realtimesignal处理器未正确更新索引数据.更新了多个到多个数据后,我的搜索结果出错了.
它在手动运行rebuild_index命令后工作.我认为rebuild_index正在工作,因为它首先进行清理,然后再次构建索引数据.
有人可以提出一些问题的解决方案吗?
顺便说一下,围绕它的代码.
模型:
class Message_forum(models.Model):
message = models.ForeignKey(Message)
tags = models.ManyToManyField(Tag, blank=True, null=True) #this is many to many field
Run Code Online (Sandbox Code Playgroud)
search_index.py:
class Message_forumIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.EdgeNgramField(document=True, use_template=True)
message = indexes.CharField(model_attr='message', null=True)
tags = indexes.CharField(model_attr='tags', null=True)
def get_model(self):
return Message_forum
def index_queryset(self, using=None):
return self.get_model().objects.all()
def prepare_tags(self, obj):
return [tag.tag for tag in obj.tags.all()]
Run Code Online (Sandbox Code Playgroud)
索引模板:
{{ object.tags.tag }}
Run Code Online (Sandbox Code Playgroud)
settings.py:
HAYSTACK_SIGNAL_PROCESSOR = 'haystack.signals.RealtimeSignalProcessor'
Run Code Online (Sandbox Code Playgroud)
我有干草堆的最新版本,并且作为后端嗖的一声.
我正在尝试使用django-haystack进行地理空间查询,如下所述:http://django-haystack.readthedocs.org/en/latest/spatial.html我使用elasticsearch作为后端.我根据文档创建了search_indexes,配置了django,当我第一次尝试使用rebuild_index管理命令时,我看到了一个错误:
python manage.py rebuild_index --settings=myproject.settings.local
WARNING: This will irreparably remove EVERYTHING from your search index in connection 'default'.
Your choices after this are to restore from backups or rebuild via the `rebuild_index` command.
Are you sure you wish to continue? [y/N] y
Removing all documents from your index because you said so.
All documents removed.
Indexing 1 Venues
Traceback (most recent call last):
File "manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
...
...
File "/f/venvs/myproject/local/lib/python2.7/site-packages/haystack/backends/elasticsearch_backend.py", line 161, …Run Code Online (Sandbox Code Playgroud) 我正在开发一个多语言应用程序,我需要实现一个搜索引擎,我选择了haystack.
这是我要索引的模型
class Post(TranslatableModel):
category = models.ForeignKey(
Category,
related_name='posts',
verbose_name=_(u'Categoría')
)
slug = AutoSlugField(
populate_from='title'
)
featured_picture = ThumbnailerImageField(
upload_to='blog/posts/featured-pictures',
verbose_name=_(u'Imagen destacada'),
help_text=_(u'Tamaño: 850 x 423px. Será recordada si no.')
)
box_bg = models.CharField(
max_length=20,
verbose_name=_(u'Color de fondo de la caja'),
choices=SERVICE_BOX_COLORS,
# Could be an image
null=True, blank=True
)
box_image_bg = ThumbnailerImageField(
upload_to='blog/posts/background-images',
verbose_name=_(u'Imagen de fondo de la caja'),
null=True, blank=True,
help_text=_(u'Tamaño: 500 x 500px. Será recordada si no.')
)
translations = TranslatedFields(
title=models.CharField(
max_length=100,
verbose_name=_(u'Título')
),
content=RichTextField(
verbose_name=_(u'Contenido') …Run Code Online (Sandbox Code Playgroud) 我先说一下,我在这里试过修复:
Haystack说"无法找到SearchResult的模型"
而且我还在
Model could not be found for SearchResult '<SearchResult: dictionary.termentry (pk=u'10')>'.
Run Code Online (Sandbox Code Playgroud)
我正在使用飞快移动的Django 1.9和Haystack 2.4.1.我已经确定SearchQuerySet过滤得很好(当print queryset我得到一个SearchResult对象列表时).我没有触及SearchIndex定义之外的任何东西,所以这是开箱即用的东西.仅供参考,以下是相关的代码:
在search_indexes.py中:
class TermIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True,use_template=True)
rendered = indexes.CharField(use_template=True,indexed=False)
def get_model(self):
return TermEntry
def index_queryset(self,using=None):
"""Used when updating index for model"""
return self.get_model().objects.all()
Run Code Online (Sandbox Code Playgroud)
在views.py中:
def search(request):
query = ''
queryset = None
results = []
showresults = True
if request.method == 'GET' and request.GET.get('q'):
form = SearchForm(request.GET)
showresults = True
query = request.GET.get('q')
# making sure we got …Run Code Online (Sandbox Code Playgroud) django-haystack ×10
django ×8
python ×4
whoosh ×3
command ×1
django-hvad ×1
geodjango ×1
import ×1
importerror ×1
python-3.x ×1
search ×1
setuptools ×1
solr ×1