一个很好的django搜索应用程序? - 如何使用Haystack进行模糊搜索?

时间:2010-01-21 15:31:18

标签: python django solr django-haystack fuzzy-search

我现在正在使用django-haystack 用apache-solr作为后端。

问题是我无法让应用程序执行我正在寻找的搜索功能

  1. 搜索单词中的子部分

      

    例如。搜索“buntu”不会给我“ubuntu”

  2. 搜索类似的字词

      

    例如。搜索“ubantu”会给出“ubuntu”


  3. 非常感谢任何帮助。

1 个答案:

答案 0 :(得分:9)

这实际上是关于如何将查询传递回Haystack(因此也传递给Solr)。您可以在单词后面使用~在Solr / Lucene中进行“模糊”搜索:

ubuntu~

会同时返回buntuubantu。请参阅此处的Lucene documentation

如何通过Haystack传递此信息取决于您目前如何使用它。假设您正在使用默认的SearchForm,最好的方法是覆盖表单的clean_q方法,在搜索结果中的每个单词的末尾添加波浪号,或覆盖search方法在将它传递给SearchQuerySet之前做同样的事情。