首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django haystack模块搜索

django haystack模块搜索
EN

Stack Overflow用户
提问于 2013-01-16 18:38:05
回答 1查看 509关注 0票数 1

我正在尝试为我的应用程序添加一个模块范围的搜索,但发现了haystack-search。我用呼呼来存储搜索信息。

我已经按照文档中的说明配置了我的搜索,并且已经可以找到结果了。

我的问题是一个字段,其中存储和电子邮件地址("test@testdomain.com")。当我搜索"testdomain“时,我不会得到任何结果,但当我搜索"tesdomain.com”时,我会得到一些结果。现在,我想要在输入"testdomain.com“时得到结果(输入"testdomain”时得到的结果)。有什么想法可以做到吗?

有没有人在干草堆的邮件列表上发过帖子?对我来说,即使我是谷歌群组的一员,也不可能发帖。

问候马丁

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-30 22:47:54

现在我有了这个问题的答案。随haystack提供的标准搜索不支持按子字符串搜索。

我创建了自己的搜索应用程序(mysearch),它将使用haystacksearch

你需要做的就是创建你自己的SearchForm (mysearch/forms.py)

代码语言:javascript
复制
from django import forms
from haystack.forms import ModelSearchForm
from haystack.query import SearchQuerySet

class AutocompleteSearchForm(ModelSearchForm):

  def search(self):
    if not self.is_valid():
      return self.no_query_found()

    if not self.cleaned_data.get('q'):
      return self.no_query_found()

    sqs = self.searchqueryset.filter(autocompletetext=self.cleaned_data.get('q'))

    sqs = sqs.models(*self.get_models())

    if self.load_all:
      sqs = sqs.load_all()

    return sqs

然后您必须使用您自己的SearchForm (mysearch/urls.py)创建您自己的url-route

代码语言:javascript
复制
from django.conf.urls.defaults import *
from haystack.forms import ModelSearchForm
from haystack.query import SearchQuerySet
from haystack.views import SearchView
from forms import AutocompleteSearchForm

sqs = SearchQuerySet()

# Without threading...
urlpatterns = patterns('haystack.views',
  url(r'^$', SearchView(searchqueryset=sqs, form_class=AutocompleteSearchForm), name='haystack_search'),
)

在项目中使用urls.py

代码语言:javascript
复制
url(r"^search/", include("mysearch.urls", namespace="Search")),

而不是

代码语言:javascript
复制
url(r'^search/', include('haystack.urls', namespace="Search")),
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14356405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档