2016-02-13 62 views
0

我正在嘗試使用haystack和solr的停用詞特性,但它的作用與它應該做的相反,而不是得到任何結果我在索引中獲得所有文檔。但是,當查詢由haystack執行時,在solr web界面中工作正常。乾草堆solr和停用詞

#versions 
Django 1.8 
django-haystack 2.4.1 
solr 4.10.2 

這裏Solr的日誌中爲同一禁用詞「LES」既Solr的和haytstack查詢:

#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的一面,當查詢從草堆裏,他知道這個詞是在但它像它將此字轉換爲:

*:* 

並匹配所有文檔,但在日誌中看不到此內容。

也許我應該在我的django項目中創建一個停用詞數組,並返回一個空的searchQuerySet,如果這個詞在這個數組中?

我真的很感謝在這方面的一點幫助,它不可能獨自一人有這個問題。

謝謝。

回答

1

停用詞是從索引(和查詢)中刪除的詞,表示您的查詢僅爲visible:true。他們不以任何方式「停止」查詢。

一個可能的解決方案可能是在索引時間中刪除停用詞,而在查詢時刪除它們(具有用於索引和查詢的不同分析鏈),導致在未找到標記時查詢不會獲得命中該指數。

但是,這可能會打破其他的東西,比如當唯一的索引值是「時間變化」時查詢「變化時間」。停用詞可能不是您想要解決您遇到的問題的東西。

+0

如果我刪除過濾器停用詞的作品,我會找到另一種過濾器的方式。謝謝 – V1ce