一个好的 django 搜索应用程序? —如何使用Haystack进行模糊搜索?
我现在正在使用 django-haystack 以 apache-solr 作为后端。
问题是我无法让应用程序执行我正在寻找的搜索功能
搜索单词中的子部分
<块引用> 例如。搜索“buntu”不会给我“ubuntu”搜索类似的词
<块引用> 例如。搜索“ubantu”将得到“ubuntu”
任何帮助将非常感激。
I'm using django-haystack at the moment
with apache-solr as the backend.
Problem is I cannot get the app to perform the search functionality I'm looking for
Searching for sub-parts in a word
eg. Searching for "buntu" does not give me "ubuntu"
Searching for similar words
eg. Searching for "ubantu" would give "ubuntu"
Any help would be very much appreciated.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这实际上是关于如何将查询传递回 Haystack(从而传递回 Solr)。您可以在 Solr/Lucene 中通过在单词后使用
~
进行“模糊”搜索:将返回
buntu
和ubantu
。有关此内容,请参阅 Lucene 文档。您如何通过 Haystack 传递此信息取决于您当前如何使用它。假设您使用默认的 SearchForm,最好的办法是重写表单的
clean_q
方法以在搜索结果中每个单词的末尾添加波浪号,或者重写search
方法在将其传递给 SearchQuerySet 之前执行相同的操作。This is really about how you pass the query back to Haystack (and therefore to Solr). You can do a 'fuzzy' search in Solr/Lucene by using a
~
after the word:would return both
buntu
andubantu
. See the Lucene documentation on this.How you pass this through via Haystack depends on how you're using it at the moment. Assuming you're using the default SearchForm, the best thing would be to either override the form's
clean_q
method to add the tilde on the end of every word in the search results, or override thesearch
method to do the same thing there before passing it to the SearchQuerySet.