首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用django-haystack和elasticsearch后端进行模糊搜索?

如何使用django-haystack和elasticsearch后端进行模糊搜索?
EN

Stack Overflow用户
提问于 2013-08-01 17:28:29
回答 1查看 3.5K关注 0票数 11

看起来elasticsearch支持模糊查询(http://www.elasticsearch.org/guide/reference/query-dsl/fuzzy-query/),但是我想不出让django-haystack通过这个选项的方法。

我深入研究了django-haystack搜索,看起来它在使用elasticsearch后端时使用的是'match_all‘查询。不需要修改django-haystack源代码就能得到模糊匹配行为吗?

资料来源:backend.py (我怀疑需要改变的是build_search_kwargs方法)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-02 11:50:03

不需要分叉栈,您可以在自己的后端更新该方法(有关更多细节,请参见扩展海斯塔克的ElasticSearch后端)。build_search_kwargs方法返回一个字典,因此您只需修改原始返回值。

免责声明:这段代码只是一个例子,说明了如何更新自己的后端,而不是而不是如何实现模糊搜索。

代码语言:javascript
复制
class FuzzyBackend(ElasticsearchSearchBackend):
    def build_search_kwargs(self, query_string, **kwargs):
        fuzzy = kwargs.pop('fuzzy', False)
        fuzzy_field = kwargs.pop('min_similarity', '')
        search_kwargs = super(FuzzyBackend, self).build_search_kwargs(
                query_string, kwargs)
        if fuzzy:
            search_kwargs = {'fuzzy': {fuzzy_field: query_string}}
        return search_kwargs
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18000714

复制
相关文章

相似问题

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