django xapian干草堆权限问题

django xapian干草堆权限问题,django,permissions,django-haystack,xapian,Django,Permissions,Django Haystack,Xapian,我一直在尝试让xapian为我正在进行的一个项目django haystack工作,该项目需要一些搜索功能,但遇到了一些麻烦!!基本上,我按照说明安装了所有设备,因此: 为xapian核心和xapian绑定运行make安装 运行pip安装haystack和pip安装xapian haystack,并正确安装所有内容 当我使用django cms应用程序时,我只是简单地复制了这个例子,对搜索功能进行了测试,并遇到了这个错误 InvalidIndexError at /search/ Unable

我一直在尝试让xapian为我正在进行的一个项目django haystack工作,该项目需要一些搜索功能,但遇到了一些麻烦!!基本上,我按照说明安装了所有设备,因此:

为xapian核心和xapian绑定运行make安装 运行pip安装haystack和pip安装xapian haystack,并正确安装所有内容

当我使用django cms应用程序时,我只是简单地复制了这个例子,对搜索功能进行了测试,并遇到了这个错误

InvalidIndexError at /search/
Unable to open index at /home/mike/sites/xapian_search
我为HAYSTACK_XAPIAN_路径设置尝试了几种不同的路径,也遇到了另一个错误

OSError at /
(13, 'Permission denied')
文件夹xapain_search已获得完整的perms(chmod 777),还有一个xapian_index.php文件也具有完整的perms。我不确定我在这里错过了什么,但我不顾一切地试图让它工作

我的草堆设置看起来像

HAYSTACK_SITECONF = 'lactoseintolerant.lactose_search'
HAYSTACK_SEARCH_ENGINE = 'xapian'
HAYSTACK_XAPIAN_PATH = '/home/mike/sites/xapian_search'
HAYSTACK_SEARCH_RESULTS_PER_PAGE = 50
任何建议都将不胜感激

编辑 又来了 我认为这个错误与没有索引有关(是这样吗?)我已经运行了命令update_index rebuild_index clear_index所有这些命令似乎都没有做任何事情,没有输出错误,但是当命令运行时,索引似乎从未生成过

我有一个名为lactose_search的应用程序,我的HAYSTACK_SITECONF指向它,因此projectname.lactose_search在这个应用程序文件夹中我有一个名为search_indexs.py的文件。现在,我有简单的c+p从django cms网站的例子,因为它是cms_应用程序的内容,我想搜索 这个文件看起来像

from django.conf import settings
from django.utils.translation import string_concat, ugettext_lazy

from haystack import indexes, site

from cms.models.managers import PageManager
from cms.models.pagemodel import Page

def page_index_factory(lang, lang_name):
if isinstance(lang_name, basestring):
    lang_name = ugettext_lazy(lang_name)

def get_absolute_url(self):
    return '/%s%s' % (lang, Page.get_absolute_url(self))

class Meta:
    proxy = True
    app_label = 'cms'
    verbose_name = string_concat(Page._meta.verbose_name, ' (', lang_name, ')')
    verbose_name_plural = string_concat(Page._meta.verbose_name_plural, ' (', lang_name, ')')
    
attrs = {'__module__': Page.__module__, 
         'Meta': Meta,
         'objects': PageManager(),
         'get_absolute_url': get_absolute_url}

_PageProxy = type("Page%s" % lang.title() , (Page,), attrs)

_PageProxy._meta.parent_attr = 'parent'
_PageProxy._meta.left_attr = 'lft'
_PageProxy._meta.right_attr = 'rght'
_PageProxy._meta.tree_id_attr = 'tree_id'

class _PageIndex(indexes.SearchIndex):
    language = lang
    
    text = indexes.CharField(document=True, use_template=False)
    pub_date = indexes.DateTimeField(model_attr='publication_date')
    login_required = indexes.BooleanField(model_attr='login_required')
    url = indexes.CharField(stored=True, indexed=False, model_attr='get_absolute_url')
    title = indexes.CharField(stored=True, indexed=False, model_attr='get_title')
    
    def prepare(self, obj):
        self.prepared_data = super(_PageIndex, self).prepare(obj)
        plugins = obj.cmsplugin_set.filter(language=lang)
        text = ''
        for plugin in plugins:
            instance, _ = plugin.get_plugin_instance()
            if hasattr(instance, 'search_fields'):
                text += ''.join(getattr(instance, field) for field in instance.search_fields)
        self.prepared_data['text'] = text
        return self.prepared_data
    
    def get_queryset(self):
        return _PageProxy.objects.published().filter(title_set__language=lang, publisher_is_draft=False).distinct()

return _PageProxy, _PageIndex

for lang_tuple in settings.LANGUAGES:
   lang, lang_name = lang_tuple
    site.register(*page_index_factory(lang, lang_name))
可以在这里找到


希望这些额外的信息可以使回答这个问题更容易

这是一个我还没有遇到的相当奇怪的问题(而且这里还没有人报告:)

旧版本的Xapian Haystack需要写权限(才能创建索引),并在启动时进行了检查,验证了这一点,但这一点已被删除

只要进程可以读取HAYSTACK\u XAPIAN\u路径文件夹,您就不会收到任何被拒绝的
权限
错误


您能确认您正在使用的后端版本吗?如果可能的话,我还建议尝试用嗖嗖声替换后端,作为一种理智检查,以确保没有发生任何事情。

这是一个我还没有遇到的相当奇怪的问题(这里还没有人报告:)

旧版本的Xapian Haystack需要写权限(才能创建索引),并在启动时进行了检查,验证了这一点,但这一点已被删除

只要进程可以读取HAYSTACK\u XAPIAN\u路径文件夹,您就不会收到任何被拒绝的
权限
错误


您能确认您正在使用的后端版本吗?如果可能的话,我还建议尝试用Whoosh替换后端,这只是为了检查是否存在hokey问题。

我发现了问题所在,当我将包安装到env时,我运行了sudo pip安装,而不是简单地使用pip。我无法解释为什么这会影响haystack的安装,但一旦我删除了所有的软件包并重新安装,我就设法让haystack运行了

我发现了问题所在,当我将软件包安装到我的环境中时,我运行了sudo pip安装,而不是简单地使用pip。我无法解释为什么这会影响haystack的安装,但一旦我删除了所有的软件包并重新安装,我就设法让haystack运行了

,很可能您没有使用以下命令构建索引

python manage.py update_index

同样的事情也发生在我身上,只需要运行上面的命令。

很可能您没有使用下面的命令构建索引

python manage.py update_index

同样的事情也发生在我身上,只需要运行上面的命令。

Bump!!有人对此有什么想法吗?Bump!!有人对此有什么想法吗?谢谢你的回答,老兄,今天早上我会和woosh一起去,让你知道进展如何。这真的很奇怪,我的意思是,我甚至对文件夹进行了完整的烫发,但在创建索引时仍然存在问题:SIm卡目前使用xapian haystack==1.1.5beta和django haystack==1.20,为/search/(13,“权限被拒绝”)的帮助错误干杯,甚至使用呼呼声谢谢你的回答,伙计,我今天早上和伍什去看看,告诉你进展如何。这真的很奇怪,我的意思是,我甚至求助于对文件夹进行完整的烫发,但在创建索引时仍然存在问题:SIm目前使用xapian haystack==1.1.5beta和django haystack==1.20为helpOSError在/search/(13,'拒绝权限')甚至使用whoosh