两个问题合并为一个问题:
为什么 haystack auto_query 向 solr 发送两个请求并转义 : 字符?
我已经按照手册中的说明设置了 haystack,一切运行正常,但是每当我跟踪我的 solr 日志时,如果来自 haystack(用于一个查询),我会看到两个请求,如果来自管理页面,则会看到一个请求:
所以我查询:
title:ong
从干草堆我得到:
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 作为字符串,当然它不会返回任何内容。