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

发布于 2024-08-19 02:27:46 字数 266 浏览 12 评论 0原文

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

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

  1. 搜索单词中的子部分

    <块引用> 例如。搜索“buntu”不会给我“ubuntu”

  2. 搜索类似的词

    <块引用> 例如。搜索“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

  1. Searching for sub-parts in a word

    eg. Searching for "buntu" does not give me "ubuntu"

  2. Searching for similar words

    eg. Searching for "ubantu" would give "ubuntu"


Any help would be very much appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

夏末染殇 2024-08-26 02:27:46

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

ubuntu~

将返回 buntuubantu。有关此内容,请参阅 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:

ubuntu~

would return both buntu and ubantu. 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 the search method to do the same thing there before passing it to the SearchQuerySet.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文