How can I do a fuzzy search using django-haystack and the elasticsearch backend?

泄露秘密 提交于 2019-12-05 04:03:40

No need to fork Haystack, you can update that method in your own backend (for more details, see Stretching Haystack's ElasticSearch Backend). The build_search_kwargs method returns a dictionary so you can just modify the original return value.

Disclaimer: this code is just an example of how you could update your own backend, not how to implement fuzzy search.

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
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!