一个好的Django搜索应用?——如何使用Haystack进行模糊搜索?

4 投票
1 回答
2132 浏览
提问于 2025-04-15 18:18

我现在正在使用django-haystack,后端是apache-solr。

问题是我无法让这个应用程序实现我想要的搜索功能。

  1. 在一个词中搜索子部分

    比如说,搜索“buntu”却找不到“ubuntu”。

  2. 搜索相似的词

    比如说,搜索“ubantu”应该能找到“ubuntu”。


任何帮助都将非常感激。

1 个回答

9

这其实是关于你如何把查询传回Haystack(也就是Solr)。在Solr/Lucene中,你可以通过在单词后面加一个~来进行“模糊”搜索:

ubuntu~

这样可以同时找到buntuubantu。想了解更多,可以查看Lucene的文档

通过Haystack传递这个查询的方式,取决于你目前是怎么使用它的。如果你使用的是默认的SearchForm,最好的办法是重写表单的clean_q方法,在每个搜索结果的单词后面加上波浪号,或者重写search方法,在把查询传给SearchQuerySet之前做同样的处理。

撰写回答