【问题标题】:haystack solr and stopwordshaystack solr 和停用词
【发布时间】:2016-02-13 10:45:26
【问题描述】:

我正在尝试将停用词功能与 haystack 和 solr 一起使用,但它的作用与它应该做的相反,我没有得到任何结果,而是得到了索引中的所有文档。但这只是在 haystack 执行查询时发生,在 solr Web 界面中可以正常工作。

#versions
Django 1.8
django-haystack 2.4.1
solr 4.10.2

这里是 solr 和 haytstack 查询相同停用词“les”的 solr 日志:

#solr
INFO  - 2016-02-13 10:14:26.520; org.apache.solr.core.SolrCore; [collection1] webapp=/solr path=/select params={indent=true&q=les&_=1455358468201&wt=json} hits=0 status=0 QTime=0

#haystack
INFO  - 2016-02-13 10:16:00.372; org.apache.solr.core.SolrCore; [collection1] webapp=/solr path=/select/ params={fl=*+score&sort=cname+asc,+pub_date+desc&start=0&q=(visible:(true)+AND+(les))&wt=json&fq=django_ct:(nav.pages+OR+nav.rubrique+OR+annuaire_commerces.adressecommerce+OR+agenda.event+OR+news.actualite+OR+annuaire_associations.adresseassoc)&rows=70} hits=70 status=0 QTime=3

#views
from haystack.generic_views import SearchView
class search(SearchView):
    template_name = 'search/search1.html'
    form_class = searchForm

    def get_queryset(self):
        queryset = super(search, self).get_queryset()
        q = queryset.filter(visible = True).order_by('cname','-pub_date')
        return q

当查询来自 haystack 时,solr 端发生了一些事情,他知道这个词是停用词,但它就像将这个词转换为:

*:*

并匹配所有文档,但在日志中看不到。

也许我应该在我的 django 项目中创建一个停用词数组,如果单词在这个数组中,则返回一个空的 searchQuerySet?

我真的很感谢您对此提供一点帮助,我不可能独自遇到这个问题。

谢谢。

【问题讨论】:

    标签: python django solr django-haystack django-1.8


    【解决方案1】:

    停用词是从索引(和查询)中删除的词,这意味着您的查询只是 visible:true。他们不会以任何方式“停止”查询。

    一种可能的解决方案可能是仅删除索引时间的停用词,同时在查询时重新整理它们(索引和查询具有不同的分析链),导致当在索引。

    但这可能会破坏其他事情,例如当唯一的索引值是“时间变化”时查询“变化时间”。停用词可能不是您要解决的问题。

    【讨论】:

    • 如果我删除过滤器停用词的作品,我会找到另一种过滤方式。谢谢
    猜你喜欢
    • 2023-03-10
    • 2013-06-08
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 2017-06-17
    • 1970-01-01
    • 2015-09-08
    • 1970-01-01
    相关资源
    最近更新 更多