干草堆solr和stopwords

2024-04-28 17:56:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用haystack和solr的stopwords特性,但是它做的与它应该做的相反,我得到的不是没有结果而是索引中的所有文档。但当haystack在solr的web界面中执行查询时,这种情况就发生了。你知道吗

#versions
Django 1.8
django-haystack 2.4.1
solr 4.10.2

这里是同一个stopword“les”的solr和haytstack查询的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

solr方面发生了一些事情当查询来自haystack时,他知道这个词在stopword中,但它好像把这个词转换成:

*:*

匹配所有文档,但在日志中看不到。你知道吗

也许我应该在我的django项目中创建一个stopword数组,并返回一个空的searchQuerySet,如果这个单词在这个数组中?你知道吗

我真的很感激有一点帮助,这是不可能的我一个人有这个问题。你知道吗

谢谢。你知道吗


Tags: ordjango文档orgcoreinfosearchapache
1条回答
网友
1楼 · 发布于 2024-04-28 17:56:36

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

一个可能的解决方案可能是在索引时删除stopwords,而在查询时保留它们(使用不同的分析链进行索引和查询),从而导致在索引中找不到标记时查询没有命中。你知道吗

但这可能会破坏其他事情,比如当唯一的索引值是“time change”时查询“time of change”。停止语可能不是你想要解决的问题。你知道吗

相关问题 更多 >