小编dpe*_*ers的帖子

Django Haystack子串搜索

我最近在我的django支持的网站上添加了搜索功能,允许雇主使用关键字搜索员工.当用户最初上传他们的简历时,我将其转换为文本,删除停用词,然后将文本添加到该用户的TextField.我使用了Django-Haystack和Whoosh搜索引擎.

三件事-

1)除了我可能不会使用的额外功能之外,切换到Solr或Xapian有什么具体的优势吗?

2)在将简历变成文本时,我基本上将自己编入索引.我知道Xapian和Solr都支持.pdf索引,但是,从它的外观来看,Haystack没有.关于如何解决这个问题的任何提示?或者我应该自己编制索引吗?如果是这样,我应该做的不仅仅是提供关键字的文本文件吗?

3)如果关键字与其自身完全匹配,则Whoosh仅返回结果.如果用户将"数学"作为他的关键词,并且我搜索"数学",我希望该用户出现.我无法明确告诉Xapian或Solr是否支持这一点.思考?

谢谢你的任何建议.我将暂时继续深入研究这个问题.

django indexing search model django-haystack

7
推荐指数
1
解决办法
1938
查看次数

具有SelectMultiple小部件的MultipleChoiceField"值[...]不是有效选择."

我的模型中定义了一个字段 -

    languages = models.CharField(max_length = 30, choices=LANGUAGE_CHOICES, blank = True, null = True)
Run Code Online (Sandbox Code Playgroud)

选择很简单 -

LANGUAGE_CHOICES = (
    ('English', 'English'),
)
Run Code Online (Sandbox Code Playgroud)

我在这个模型上定义了一个ModelForm并覆盖了该字段 -

languages = forms.MultipleChoiceField(choices=LANGUAGE_CHOICES, widget=forms.SelectMultiple)
Run Code Online (Sandbox Code Playgroud)

当我填写表格时,选择"英语",并尝试提交,我收到错误 -

语言
价值u"[u'English']"不是一个有效的选择

有什么基本的我做错了吗?或者,MultipleChoiceField与SelectMultiple小部件结合使用的方式不是很好吗?

另外,有没有理由为什么选择元组不能两次具有相同的值,就像我现在拥有的那样('英语','英语')?

这里有一些额外的代码可能有助于深入了解这一点

模板代码:

<div class="abovepad">
<label for="id_languages">Languages:</label>
    {{form.languages}}
</div>
Run Code Online (Sandbox Code Playgroud)

具有以下语言的POST数据部分:

u'languages': [u'English'],
Run Code Online (Sandbox Code Playgroud)

ModelForm代码的相关片段:

class ProfileForm(forms.ModelForm):        
languages = forms.MultipleChoiceField(choices=LANGUAGE_CHOICES)
class Meta:
    model = Student
Run Code Online (Sandbox Code Playgroud)

如你所见,我几乎没有定制任何东西.在我遇到这个问题的过去,我会切换到列表中的项目为模型,然后使用ManyToMany字段,这不会导致相同的问题.对于那些情况,让项目成为模型是有意义的; 在这种情况下它没有.我只是想知道我做错了什么,或者这个组合是不是应该工作.如果没有真正的答案,那么我的另一个选择就是尝试挖掘Django表单代码,看看它为什么要这样做.

forms django select field django-models

2
推荐指数
1
解决办法
4132
查看次数