我正在尝试为我的应用程序添加一个模块范围的搜索,但发现了haystack-search。我用呼呼来存储搜索信息。
我已经按照文档中的说明配置了我的搜索,并且已经可以找到结果了。
我的问题是一个字段,其中存储和电子邮件地址("test@testdomain.com")。当我搜索"testdomain“时,我不会得到任何结果,但当我搜索"tesdomain.com”时,我会得到一些结果。现在,我想要在输入"testdomain.com“时得到结果(输入"testdomain”时得到的结果)。有什么想法可以做到吗?
有没有人在干草堆的邮件列表上发过帖子?对我来说,即使我是谷歌群组的一员,也不可能发帖。
问候马丁
发布于 2013-01-30 22:47:54
现在我有了这个问题的答案。随haystack提供的标准搜索不支持按子字符串搜索。
我创建了自己的搜索应用程序(mysearch),它将使用haystacksearch
你需要做的就是创建你自己的SearchForm (mysearch/forms.py)
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
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
url(r"^search/", include("mysearch.urls", namespace="Search")),而不是
url(r'^search/', include('haystack.urls', namespace="Search")),https://stackoverflow.com/questions/14356405
复制相似问题