I'm trying to give a super boost to fields that match exactly, but it
doesn't appear to be working. I have this:
<field name="artist_tight" type="string_lower" indexed="true"
stored="true"/>
<field name="title_tight" type="string_lower" indexed="true" stored="true"/>
<copyField source="title" dest="title_tight"/>
<copyField source="artist" dest="artist_tight"/>
<fieldType name="string_lower" class="solr.TextField"
sortMissingLast="true" omitNorms="true">
<analyzer>
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.TrimFilterFactory" />
</analyzer>
</fieldType>
The dataset has two items with title="Rude Boy", but they are coming up
way down the list. My query looks like this: title:rude boy^100 OR
artist:rude boy^100 OR description:rude boy^5 OR tags:rude boy^10 OR
title:"rude boy"~100^100 OR artist:"rude boy"~100^100 OR
description:"rude boy"~100000 OR tags:"rude boy"~1000^10 OR
title_tight:rude boy^1000 or artist_tight:rude boy^1500 OR
artist_title:rude boy^100
The debug output seems to say that it's not even matching that field:
0.33547562 = (MATCH) product of: 1.2748073 = (MATCH) sum of: 0.004359803
= (MATCH) weight(title:rude in 19218), product of: 7.7693147E-4 =
queryWeight(title:rude), product of: 8.978507 = idf(docFreq=6,
maxDocs=20423) 8.653237E-5 = queryNorm 5.611567 = (MATCH)
fieldWeight(title:rude in 19218), product of: 1.0 =
tf(termFreq(title:rude)=1) 8.978507 = idf(docFreq=6, maxDocs=20423)
0.625 = fieldNorm(field=title, doc=19218) 0.002346348 = (MATCH)
weight(tags:rude in 19218), product of: 8.0604723E-4 =
queryWeight(tags:rude), product of: 9.31498 = idf(docFreq=4,
maxDocs=20423) 8.653237E-5 = queryNorm 2.910931 = (MATCH)
fieldWeight(tags:rude in 19218), product of: 1.0 =
tf(termFreq(tags:rude)=1) 9.31498 = idf(docFreq=4, maxDocs=20423) 0.3125
= fieldNorm(field=tags, doc=19218) 1.203806 = weight(title:"rude
boy"~100^100.0 in 19218), product of: 0.12910038 =
queryWeight(title:"rude boy"~100^100.0), product of: 100.0 = boost
14.919317 = idf(title: rude=6 boy=145) 8.653237E-5 = queryNorm 9.3245735
= fieldWeight(title:"rude boy" in 19218), product of: 1.0 =
tf(phraseFreq=1.0) 14.919317 = idf(title: rude=6 boy=145) 0.625 =
fieldNorm(field=title, doc=19218) 0.060910318 = weight(tags:"rude
boy"~1000^10.0 in 19218), product of: 0.012987026 =
queryWeight(tags:"rude boy"~1000^10.0), product of: 10.0 = boost
15.008287 = idf(tags: rude=4 boy=186) 8.653237E-5 = queryNorm 4.6900897
= fieldWeight(tags:"rude boy" in 19218), product of: 1.0 =
tf(phraseFreq=1.0) 15.008287 = idf(tags: rude=4 boy=186) 0.3125 =
fieldNorm(field=tags, doc=19218) 0.0033848688 = (MATCH)
weight(artist_title:rude in 19218), product of: 7.6537667E-4 =
queryWeight(artist_title:rude), product of: 8.844975 = idf(docFreq=7,
maxDocs=20423) 8.653237E-5 = queryNorm 4.4224877 = (MATCH)
fieldWeight(artist_title:rude in 19218), product of: 1.0 =
tf(termFreq(artist_title:rude)=1) 8.844975 = idf(docFreq=7,
maxDocs=20423) 0.5 = fieldNorm(field=artist_title, doc=19218) 0.2631579
= coord(5/19)
Someone else suggested I use DisMax, but I can't really get that to do
what I want right now either. I'm just wondering why this seems to not
be using this field at all.
-Alex