我目前正在使用 django-haystack,以 apache-solr 作为后端。
问题是我无法让应用程序执行我正在寻找的搜索功能
搜索单词中的子部分
例如。搜索“buntu”不会给我“ubuntu”
搜索相似词
例如。搜索“ubantu”会得到“ubuntu”
任何帮助将不胜感激。
我目前正在使用 django-haystack,以 apache-solr 作为后端。
问题是我无法让应用程序执行我正在寻找的搜索功能
搜索单词中的子部分
例如。搜索“buntu”不会给我“ubuntu”
搜索相似词
例如。搜索“ubantu”会得到“ubuntu”
任何帮助将不胜感激。
这实际上是关于如何将查询传递回 Haystack(因此也传递给 Solr)。~
您可以在 Solr/Lucene 中通过在单词后使用 a 进行“模糊”搜索:
ubuntu~
将返回buntu
和ubantu
。请参阅Lucene 文档。
你如何通过 Haystack 传递它取决于你现在如何使用它。假设您使用的是默认的 SearchForm,最好的办法是覆盖表单的clean_q
方法以在搜索结果中的每个单词的末尾添加波浪号,或者search
在将其传递给之前覆盖该方法以在那里执行相同的操作搜索查询集。