我现在正在使用django-haystack 用apache-solr作为后端。
问题是我无法让应用程序执行我正在寻找的搜索功能
搜索单词中的子部分
例如。搜索“buntu”不会给我“ubuntu”
搜索类似的字词
例如。搜索“ubantu”会给出“ubuntu”
非常感谢任何帮助。
答案 0 :(得分:9)
这实际上是关于如何将查询传递回Haystack(因此也传递给Solr)。您可以在单词后面使用~
在Solr / Lucene中进行“模糊”搜索:
ubuntu~
会同时返回buntu
和ubantu
。请参阅此处的Lucene documentation。
如何通过Haystack传递此信息取决于您目前如何使用它。假设您正在使用默认的SearchForm,最好的方法是覆盖表单的clean_q
方法,在搜索结果中的每个单词的末尾添加波浪号,或覆盖search
方法在将它传递给SearchQuerySet之前做同样的事情。