gpt4 book ai didi

python - 使用 whoosh 进行 django haystack 模块搜索

转载 作者:太空宇宙 更新时间:2023-11-03 19:07:22 26 4
gpt4 key购买 nike

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

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

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

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

问候马丁

最佳答案

现在我有了问题的答案。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 路由

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")),

关于python - 使用 whoosh 进行 django haystack 模块搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14356405/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com