【问题标题】:django haystack module search with whoosh使用 whoosh 搜索 django haystack 模块
【发布时间】:2013-01-16 10:38:05
【问题描述】:

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

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

我遇到的问题是一个存储和电子邮件地址的字段(“test@testdomain.com”)。当我搜索“testdomain”时,我不会得到任何结果,但是当我搜索“tesdomain.com”时,我会得到一些结果。现在我想在输入“testdomain”时得到结果(输入“testdomain.com”时得到)。任何想法如何做到这一点?

有人曾在 haystack 的邮件列表中发过邮件吗?对我来说,即使我是 google-group 的成员也无法发帖。

问候 马丁

【问题讨论】:

    标签: python django django-haystack whoosh


    【解决方案1】:

    现在我有了问题的答案。 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")),
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 2011-03-26
      • 1970-01-01
      • 2019-10-15
      • 2014-09-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多