两个问题捆绑在一个问题中:
为什么haystack auto_query向solr发送两个请求并转义:character?
我已经设置了干草堆,因为它是在手册中编写的,一切运行正常,但每当我发送我的solr日志时,我会看到两个请求,如果来自haystack(一个查询)和一个请求,如果来自管理页面:
所以我查询:
title:ong
从Haystack我得到:
Jul 12, 2012 2:37:30 PM org.apache.solr.core.SolrCore execute
INFO: [collection1] webapp=/solr path=/select/ params={spellcheck=true&sort=cand+desc&fl=*+score&start=0&q=(title\:ong)&spellcheck.count=1&spellcheck.collate=true&wt=json&fq=django_ct:(ads.model1+OR+ads.model2+OR+ads.model3)&rows=1} hits=0 status=0 QTime=21
Jul 12, 2012 2:37:30 PM org.apache.solr.core.SolrCore execute
INFO: [collection1] webapp=/solr path=/select/ params={spellcheck=true&sort=cand+desc&fl=*+score&start=0&q=(title\:ong)&spellcheck.count=1&spellcheck.collate=true&wt=json&fq=django_ct:(ads.model1+OR+ads.model2+OR+ads.model3)&rows=0} hits=0 status=0 QTime=23
来自管理部门:
Jul 12, 2012 2:42:35 PM org.apache.solr.core.SolrCore execute
INFO: [collection1] webapp=/solr path=/select params={spellcheck=true&indent=true&q=title:ong&wt=json} hits=2 status=0 QTime=12
haystack请求中存在额外参数,这是可以理解的。
正如您所看到的,q参数是相同的。
几乎一样:任何人都可以告诉为什么haystack auto_query转义:字符并发出两个请求?
我相信,因为:被转义,Solr不会从字段“title”返回“ong”并搜索title \:ong作为字符串,当然它不会返回任何内容。
答案 0 :(得分:2)
我刚刚发现它为什么逃脱冒号炭。这是因为AutoQuery默认清除它们
class AutoQuery(BaseInput):
....
def prepare(self, query_obj):
....
for token in tokens:
if not token:
continue
if token in exacts:
query_bits.append(Exact(token, clean=True).prepare(query_obj))
elif token.startswith('-') and len(token) > 1:
# This might break Xapian. Check on this.
query_bits.append(Not(token[1:]).prepare(query_obj))
else:
query_bits.append(Clean(token).prepare(query_obj))
有史以来的最新编辑:
由于此位
,它会发出两个请求 if self.results and hasattr(self.results, 'query') and self.results.query.backend.include_spelling:
context['suggestion'] = self.form.get_suggestion()
在SearchView()。create_response()
中