python – 使用django-haystack集成提取的PDF内容
发布时间:2020-12-20 13:32:14 所属栏目:Python 来源:网络整理
导读:我已经使用Solr提取了PDF / DOCX内容,并且我已经使用以下专用于此的Solr URL来建立一些搜索查询: http://localhost:8983/solr/select?q=Lycee 我想用django-haystack建立一个这样的查询.我发现这个链接正在讨论这个问题: https://github.com/toastdriven/d
我已经使用Solr提取了PDF / DOCX内容,并且我已经使用以下专用于此的Solr URL来建立一些搜索查询:
http://localhost:8983/solr/select?q=Lycee 我想用django-haystack建立一个这样的查询.我发现这个链接正在讨论这个问题: https://github.com/toastdriven/django-haystack/blob/master/docs/rich_content_extraction.rst 但是没有带有django-haystack(2.0.0-beta)的“FileIndex”类.如何在django-haystack中集成这样的搜索? 解决方法
文档中引用的“FileIndex”是haystack.indexes.SearchIndex的假设子类.这是一个例子:
from haystack import indexes from myapp.models import MyFile class FileIndex(indexes.SearchIndex,indexes.Indexable): text = indexes.CharField(document=True,use_template=True) title = indexes.CharField(model_attr='title') owner = indexes.CharField(model_attr='owner__name') def get_model(self): return MyFile def index_queryset(self,using=None): return self.get_model().objects.all() def prepare(self,obj): data = super(FileIndex,self).prepare(obj) # This could also be a regular Python open() call,a StringIO instance # or the result of opening a URL. Note that due to a library limitation # file_obj must have a .name attribute even if you need to set one # manually before calling extract_file_contents: file_obj = obj.the_file.open() extracted_data = self.backend.extract_file_contents(file_obj) # Now we'll finally perform the template processing to render the # text field with *all* of our metadata visible for templating: t = loader.select_template(('search/indexes/myapp/myfile_text.txt',)) data['text'] = t.render(Context({'object': obj,'extracted': extracted_data})) return data 因此,extract_data将替换为您提出的用于提取PDF / DOCX内容的任何过程.然后,您将更新模板以包含该数据. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |