As Chris explained, this is special: q=*:* in terms of scoring or anything of the like. It's just match-all-docs
It makes no sense to distribute *:* among "pf" fields. The whole point of pf is to influence scoring by providing a mechanism for boosting when words in some field(s) appear together for docs that _already_ match the main clause. The fp fields may be totally unrelated to the qf fields. There's no reason to couple those together. pf means "for docs that match the main query, add an additional boost if there are phrase matches in these fields". Whether the pf fields match a document has no influence on whether that doc is a hit, it only changes the score of docs that have been selected anyway because they matched the main clause. Another way of saying the above is numFound won't change at all no matter whether there are matches on "pf" fields or not. Only the scores of those docs might change. Since q=hello isn't match-all-docs, it does make sense to boost by "pf" field matches, even though it's just a single word. In that case it really means "boost docs matching the main clause if this word appears in the pf field". On a different note, field names with hyphens aren't necessarily supported, so "name_shingle_zh-cn" may work, but there also may be edge cases where that causes problems. If there are, it's unlikely that fixing them will be a priority. >From the ref guide: "The name of the field. Field names should consist of alphanumeric or underscore characters only and not start with a digit." There has been talk at times of throwing warnings or errors if names violate this, but that'd break existing apps. It's one of those things that's we live with ;) Best, Erick On Sat, Jan 6, 2018 at 6:13 PM, Nawab Zada Asad Iqbal <khi...@gmail.com> wrote: > Thanks everyone, that was a very informative thread. > > One more curiosity: why are different set of fields being used based on the > query string:- > > > http://localhost:8983/solr/filesearch/select?fq=id:1193& > q=*:*&debugQuery=true > > > - parsedquery: "+DisjunctionMaxQuery((user_email:*:* | user_name:*:* | > tags:*:* | (name_shingle_zh-cn:, , name_shingle_zh-cn:, ,) | > id:*:*)~0.01) > DisjunctionMaxQuery(((name_shingle_zh-cn:", , , ,"~100)^100.0 | > tags:*:*)~0.01)", > > > > I find it perplexing as the default values for qf and pf are very different > from above so I am not sure where these fields are coming from (although > they are all valid fields) > e.g. following query uses the my expected set of pf and qf. > > http://localhost:8983/solr/filesearch/select?fq=id:1193& > q=hello&debugQuery=true > > > > - parsedquery: "+DisjunctionMaxQuery(((name_token:hello)^60.0 | > user_email:hello | (name_combined:hello)^10.0 | (name_zh-cn:hello)^10.0 > | > name_shingle:hello | comments:hello | user_name:hello | > description:hello | > file_content_zh-cn:hello | file_content_de:hello | tags:hello | > file_content_it:hell | file_content_fr:hello | file_content_es:hell | > file_content_en:hello | id:hello)~0.01) > DisjunctionMaxQuery((description:hello > | (name_shingle:hello)^100.0 | comments:hello | tags:hello)~0.01)", > > > On Sat, Jan 6, 2018 at 12:05 PM, Chris Hostetter <hossman_luc...@fucit.org > > > wrote: > > > > > : Yes, i am using dismax. But dismax allows *:* for q.alt ,which also > seems > > : like inconsistency. > > > > dismax is a *parser* that affects how a single query string is parsed. > > > > when you use defType=dismax, that only changes how the "q" param is > > parsed -- not any other query string params, like "fq" or "facet.query" > > (or "q.alt") > > > > when you have a request like "defType=dismax&q=&q.alt=*:*" what you are > > saying, and what solr is doing, is... > > > > * YOU: hey solr, use dismax as the default parser for the q param > > * SEARCHHANDLER: ok, if the "q" param does not use local params to > > override the parser, i will use dismax > > * SEARCHHANDLER: hey dismax qparser, go parse the string "" > > * DISMAXQP: that string is empty, so instead we should use q.alt > > * SEARCHHANDLER: ok, i will parse the q.alt param and use that query in > > place of the empty q param > > * SEARCHHANDLER: hey lucene qparser, the string "*:*" does not use local > > params to override the parser, please parse it > > * LUCENEQP: the string "*:*" is a MatchAllDocsQuery > > * SEARCHHANDLER: cool, i'll use that as my main query > > > > > > > > -Hoss > > http://www.lucidworks.com/ > > >