The wildcard query is “constant score” to make it faster, so unfortunately that means there is no score differentiation between the wildcard matches.
You can simple add the wildcard prefix as a separate query term and boost it: q=text:carre* text:carre^1.5 -- Jack Krupansky From: Pigeyre Romain Sent: Wednesday, September 24, 2014 2:12 PM To: solr-user@lucene.apache.org Cc: Pigeyre Romain Subject: Scoring with wild cars Hi, I hava two records with name_fra field One with name_fra=”un test CARREAU” And another one with name_fra=”un test CARRE” { "codeBarre": "1", "name_FRA": "un test CARREAU" } { "codeBarre": "2", "name_FRA": "un test CARRE" } Configuration of these fields are : <field name="name_FRA" type="text_general" indexed="true" stored="true" required="false" multiValued="false" /> <field name="codeBarre" type="string" indexed="true" stored="true" required="true" multiValued="false" /> <field name="text" type="text_general" indexed="true" stored="false" multiValued="true" /> <copyField source="name_FRA" dest="text"/> <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100"> <analyzer type="index"> <tokenizer class="solr.WhitespaceTokenizerFactory"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" /> <!-- in this example, we will only use synonyms at query time <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/> --> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.ASCIIFoldingFilterFactory"/> </analyzer> <analyzer type="query"> <tokenizer class="solr.WhitespaceTokenizerFactory"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" /> <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.ASCIIFoldingFilterFactory"/> </analyzer> </fieldType> When I’m using this query : http://localhost:8983/solr/cdv_product/select?q=text%3Acarre*&fl=score%2C+*&wt=json&indent=true&debugQuery=true The result is : { "responseHeader":{ "status":0, "QTime":2, "params":{ "debugQuery":"true", "fl":"score, *", "indent":"true", "q":"text:carre*", "wt":"json"}}, "response":{"numFound":2,"start":0,"maxScore":1.0,"docs":[ { "codeBarre":"1", "name_FRA":"un test CARREAU", "_version_":1480150860842401792, "score":1.0}, { "codeBarre":"2", "name_FRA":"un test CARRE", "_version_":1480150875738472448, "score":1.0}] }, "debug":{ "rawquerystring":"text:carre*", "querystring":"text:carre*", "parsedquery":"text:carre*", "parsedquery_toString":"text:carre*", "explain":{ "1":"\n1.0 = (MATCH) ConstantScore(text:carre*), product of:\n 1.0 = boost\n 1.0 = queryNorm\n", "2":"\n1.0 = (MATCH) ConstantScore(text:carre*), product of:\n 1.0 = boost\n 1.0 = queryNorm\n"}, "QParser":"LuceneQParser", "timing":{ "time":2.0, "prepare":{ "time":1.0, "query":{ "time":1.0}, "facet":{ "time":0.0}, "mlt":{ "time":0.0}, "highlight":{ "time":0.0}, "stats":{ "time":0.0}, "expand":{ "time":0.0}, "debug":{ "time":0.0}}, "process":{ "time":1.0, "query":{ "time":0.0}, "facet":{ "time":0.0}, "mlt":{ "time":0.0}, "highlight":{ "time":0.0}, "stats":{ "time":0.0}, "expand":{ "time":0.0}, "debug":{ "time":1.0}}}}} The score is the same for both of record. CARREAU record is first and CARRE is next. I want to place CARRE before CARREAU result because CARRE is an exact match. Is it possible? NB : scoring for this query only use querynorm and boosters In this test : http://localhost:8983/solr/cdv_product/select?q=text%3Acarre&fl=score%2C*&wt=json&indent=true&debugQuery=true I have only one record found but the scoring is more complex. Why? { "responseHeader":{ "status":0, "QTime":2, "params":{ "debugQuery":"true", "fl":"score,*", "indent":"true", "q":"text:carre", "wt":"json"}}, "response":{"numFound":1,"start":0,"maxScore":0.53033006,"docs":[ { "codeBarre":"2", "name_FRA":"un test CARRE", "_version_":1480150875738472448, "score":0.53033006}] }, "debug":{ "rawquerystring":"text:carre", "querystring":"text:carre", "parsedquery":"text:carre", "parsedquery_toString":"text:carre", "explain":{ "2":"\n0.53033006 = (MATCH) weight(text:carre in 0) [DefaultSimilarity], result of:\n 0.53033006 = fieldWeight in 0, product of:\n 1.4142135 = tf(freq=2.0), with freq of:\n 2.0 = termFreq=2.0\n 1.0 = idf(docFreq=1, maxDocs=2)\n 0.375 = fieldNorm(doc=0)\n"}, "QParser":"LuceneQParser", "timing":{ "time":2.0, "prepare":{ "time":1.0, "query":{ "time":1.0}, "facet":{ "time":0.0}, "mlt":{ "time":0.0}, "highlight":{ "time":0.0}, "stats":{ "time":0.0}, "expand":{ "time":0.0}, "debug":{ "time":0.0}}, "process":{ "time":1.0, "query":{ "time":0.0}, "facet":{ "time":0.0}, "mlt":{ "time":0.0}, "highlight":{ "time":0.0}, "stats":{ "time":0.0}, "expand":{ "time":0.0}, "debug":{ "time":1.0}}}}} Romain PIGEYRE Centre de service de Lyon Sopra Parc du Puy d'Or 72 Allée des Noisetiers - CS 10137 69578 - LIMONEST France Phone : +33 (0)4 37 26 43 33 romain.pige...@sopra.com - www.sopra.com Ce message peut contenir des informations confidentielles dont la divulgation est à ce titre rigoureusement interdite en l'absence d'autorisation explicite de l'émetteur. Dans l'hypothèse où vous auriez reçu par erreur ce message, merci de le renvoyer à l'émetteur et de détruire toute copie. P Pensez à l'environnement avant d'imprimer.