看起来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方法)
发布于 2013-08-02 11:50:03
不需要分叉栈,您可以在自己的后端更新该方法(有关更多细节,请参见扩展海斯塔克的ElasticSearch后端)。build_search_kwargs方法返回一个字典,因此您只需修改原始返回值。
免责声明:这段代码只是一个例子,说明了如何更新自己的后端,而不是而不是如何实现模糊搜索。
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_kwargshttps://stackoverflow.com/questions/18000714
复制相似问题