Is solr 4.0 ready for prime time? (or other ways to use geo distance in search)
Hi all, I've been using solr 1.4 and it's working great for what I'm doing. However, I'm now finding a need to filter results by location. Searching around, I see that the distance functions are implemented in solr 4.0, but there's no full release yet. So my question is, is solr 4.0-dev ready to be used in prime time? My other option would appear to be using the cartesian distance, which isn't totally accurate, but it probably good enough for my purposes. Something like including this in my filter query: sum(pow(sub(input_latitiude,stored_latitude),2),pow(sub(input_longitude,stored_longitude),2))distance filter What's anyone else out there using? Thanks in advance, Alex
Lock obtain timed out: NativeFSLock
I recently added a second core to my solr setup, and I'm now running into this "Lock obtain timed out" error when I try to update one core after I've updated another core. In my update process, I add/update 1000 documents at a time and commit in between. Then at the end, I commit and optimize. The update of the new core has about 150k documents. If I try to update the old core any time after updating the new core (even a couple hours later), I get the below error. I've tried switching to the simple lock, but that didn't change anything. I've tried this on solr 1.4 and 1.4.1 both with the spatial-solr-2.0-RC2 plugin loaded. If I restart solr, I can then update the old core again. Does anyone have any insight for me here? Feb 1, 2011 10:59:57 AM org.apache.solr.common.SolrException log SEVERE: org.apache.lucene.store.LockObtainFailedException: Lock obtain timed out: NativeFSLock@./solr/data/index/lucene-088f283afa122cf05ce7eadb1b5ce07b-write.lock at org.apache.lucene.store.Lock.obtain(Lock.java:85) at org.apache.lucene.index.IndexWriter.init(IndexWriter.java:1545) at org.apache.lucene.index.IndexWriter.(IndexWriter.java:1402) at org.apache.solr.update.SolrIndexWriter.(SolrIndexWriter.java:190) at org.apache.solr.update.UpdateHandler.createMainIndexWriter(UpdateHandler.java:98) at org.apache.solr.update.DirectUpdateHandler2.openWriter(DirectUpdateHandler2.java:173) at org.apache.solr.update.DirectUpdateHandler2.addDoc(DirectUpdateHandler2.java:220) at org.apache.solr.update.processor.RunUpdateProcessor.processAdd(RunUpdateProcessorFactory.java:61) at org.apache.solr.handler.XMLLoader.processUpdate(XMLLoader.java:139) at org.apache.solr.handler.XMLLoader.load(XMLLoader.java:69) at org.apache.solr.handler.ContentStreamHandlerBase.handleRequestBody(ContentStreamHandlerBase.java:54) at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:131) at org.apache.solr.core.SolrCore.execute(SolrCore.java:1316) at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:338) at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:241) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1089) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:365) at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712) at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405) at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:211) at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139) at org.mortbay.jetty.Server.handle(Server.java:285) at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:502) at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:835) at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:641) at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:202) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:378) at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:226) at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)
Re: Lock obtain timed out: NativeFSLock
I'm going to go ahead and replay to myself since I solved my problem. It seems I was doing one more update to the data at the end and wasn't doing a commit, so it then couldn't write to the other core. Adding the last commit seems to have fixed everything. On 2/1/2011 11:08 AM, Alex Thurlow wrote: I recently added a second core to my solr setup, and I'm now running into this "Lock obtain timed out" error when I try to update one core after I've updated another core. In my update process, I add/update 1000 documents at a time and commit in between. Then at the end, I commit and optimize. The update of the new core has about 150k documents. If I try to update the old core any time after updating the new core (even a couple hours later), I get the below error. I've tried switching to the simple lock, but that didn't change anything. I've tried this on solr 1.4 and 1.4.1 both with the spatial-solr-2.0-RC2 plugin loaded. If I restart solr, I can then update the old core again. Does anyone have any insight for me here? Feb 1, 2011 10:59:57 AM org.apache.solr.common.SolrException log SEVERE: org.apache.lucene.store.LockObtainFailedException: Lock obtain timed out: NativeFSLock@./solr/data/index/lucene-088f283afa122cf05ce7eadb1b5ce07b-write.lock at org.apache.lucene.store.Lock.obtain(Lock.java:85) at org.apache.lucene.index.IndexWriter.init(IndexWriter.java:1545) at org.apache.lucene.index.IndexWriter.(IndexWriter.java:1402) at org.apache.solr.update.SolrIndexWriter.(SolrIndexWriter.java:190) at org.apache.solr.update.UpdateHandler.createMainIndexWriter(UpdateHandler.java:98) at org.apache.solr.update.DirectUpdateHandler2.openWriter(DirectUpdateHandler2.java:173) at org.apache.solr.update.DirectUpdateHandler2.addDoc(DirectUpdateHandler2.java:220) at org.apache.solr.update.processor.RunUpdateProcessor.processAdd(RunUpdateProcessorFactory.java:61) at org.apache.solr.handler.XMLLoader.processUpdate(XMLLoader.java:139) at org.apache.solr.handler.XMLLoader.load(XMLLoader.java:69) at org.apache.solr.handler.ContentStreamHandlerBase.handleRequestBody(ContentStreamHandlerBase.java:54) at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:131) at org.apache.solr.core.SolrCore.execute(SolrCore.java:1316) at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:338) at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:241) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1089) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:365) at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712) at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405) at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:211) at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139) at org.mortbay.jetty.Server.handle(Server.java:285) at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:502) at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:835) at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:641) at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:202) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:378) at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:226) at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)
NullPointerException on queries to new 3rd core
I just moved to a multi core solr instance a few weeks ago, and it's been working great. I'm trying to add a 3rd core and I can't query against it though. I'm running 1.4.1 (and tried 1.4.0) with the spatial search plugin. This is the section in solr.xml I've removed the index dir and completely rebuilt all three cores from scratch. I can query the old ones, but any query against the new one gives me this error: HTTP ERROR: 500 null java.lang.NullPointerException at org.apache.solr.request.XMLWriter.writePrim(XMLWriter.java:761) at org.apache.solr.request.XMLWriter.writeStr(XMLWriter.java:619) at org.apache.solr.schema.TextField.write(TextField.java:45) at org.apache.solr.schema.SchemaField.write(SchemaField.java:108) at org.apache.solr.request.XMLWriter.writeDoc(XMLWriter.java:311) at org.apache.solr.request.XMLWriter$3.writeDocs(XMLWriter.java:483) at org.apache.solr.request.XMLWriter.writeDocuments(XMLWriter.java:420) at org.apache.solr.request.XMLWriter.writeDocList(XMLWriter.java:457) at org.apache.solr.request.XMLWriter.writeVal(XMLWriter.java:520) at org.apache.solr.request.XMLWriter.writeResponse(XMLWriter.java:130) at org.apache.solr.request.XMLResponseWriter.write(XMLResponseWriter.java:34) at org.apache.solr.servlet.SolrDispatchFilter.writeResponse(SolrDispatchFilter.java:325) at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:254) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1089) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:365) at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712) at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405) at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:211) at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139) at org.mortbay.jetty.Server.handle(Server.java:285) at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:502) at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:821) at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:513) at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:208) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:378) at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:226) at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442) I'm not finding any reason why this should be happening.
Different weights to different fields
Hi everyone, I'm new to Solr and just getting it set up and testing it out. I'd like to know if there's a way to give a different weight to different data fields. For an example, I'm going to be storing song information. I have the fields: Artist, Title, Description, and Tags. I'd like occurrences of the search term in Artist and Title to count more than the ones found in Description and Tags. For instance, a search for Bruce Springsteen against all the fields should return the ones where artist=Bruce Springsteen higher than ones that just have that within the description. Is this possible either in the indexing or with a query option? Thanks, Alex -- Alex Thurlow Blastro Networks http://www.blastro.com http://www.roxwel.com http://www.yallwire.com
Re: Different weights to different fields
That's great information. Thanks! -Alex Alex Thurlow Blastro Networks http://www.blastro.com http://www.roxwel.com http://www.yallwire.com On 3/2/2010 3:11 PM, Ahmet Arslan wrote: I'm new to Solr and just getting it set up and testing it out. I'd like to know if there's a way to give a different weight to different data fields. For an example, I'm going to be storing song information. I have the fields: Artist, Title, Description, and Tags. I'd like occurrences of the search term in Artist and Title to count more than the ones found in Description and Tags. For instance, a search for Bruce Springsteen against all the fields should return the ones where artist=Bruce Springsteen higher than ones that just have that within the description. Is this possible either in the indexing or with a query option? You can do it in either query time or index time. In query time you can assign different boost values with carat operator. e.g. Artist:(Bruce Springsteen)^10 Title:(Bruce Springsteen)^5 Also dismax[1] request handler might useful to you. [1]http://wiki.apache.org/solr/DisMaxRequestHandler At index time you can give different boost values to different fields. [2] e.g. [2]http://wiki.apache.org/solr/UpdateXmlMessages#Optional_attributes_for_.22field.22
Boosting exact matches
Hi all, I've searched the archives and web, but I haven't found a great solution to this issue. I would like to boost the results for things that match exactly. For example, I have an artist field with possible values of: Houston Whitney Houston Marques Houston I would like the Houston results to come up first and then the other ones. What I currently have is: And this is what my query looks like: title:$search^100 OR artist:$search^100 OR description:$search^5 OR tags:$search^$tagboost OR title:\"$search\"~100^100 OR artist:\"$search\"~100^100 OR description:\"$search\"~10^5 OR tags:\"$search\"~1000^$tagboost OR artist_metaphone:$search^0.2 OR title_metaphone:$search^0.2 or title_tight:$search^100 or artist_tight:$search^100 I have tried artist_tight as string, textTight, and text_ws, all to no avail. I have completely deleted my index between changes and reinserted all my data. What am I missing here? -- Alex Thurlow Blastro Networks http://www.blastro.com http://www.roxwel.com http://www.yallwire.com
Re: Boosting exact matches
So I figured out part of my problem. The string field type doesn't have the lowercase filter on it. I can't seem to figure out how to add the lowercase filter to it though. This: Gives me this error. SEVERE: org.apache.solr.common.SolrException: analyzer without class or tokenizer & filter list Is there a way to have a string field that's case-insensitive? Alex Thurlow Blastro Networks http://www.blastro.com http://www.roxwel.com http://www.yallwire.com On 3/10/2010 12:11 PM, Alex Thurlow wrote: Hi all, I've searched the archives and web, but I haven't found a great solution to this issue. I would like to boost the results for things that match exactly. For example, I have an artist field with possible values of: Houston Whitney Houston Marques Houston I would like the Houston results to come up first and then the other ones. What I currently have is: And this is what my query looks like: title:$search^100 OR artist:$search^100 OR description:$search^5 OR tags:$search^$tagboost OR title:\"$search\"~100^100 OR artist:\"$search\"~100^100 OR description:\"$search\"~10^5 OR tags:\"$search\"~1000^$tagboost OR artist_metaphone:$search^0.2 OR title_metaphone:$search^0.2 or title_tight:$search^100 or artist_tight:$search^100 I have tried artist_tight as string, textTight, and text_ws, all to no avail. I have completely deleted my index between changes and reinserted all my data. What am I missing here?
Matching a string across multiple fields
So on with the questions. I'm indexing music, and I have artist and title fields. It works great if I just search for the artist or just for the title, but if I search for a string of both, that artist, title combination does not come up first. For example, I have: artist: Whitney Houston title: Saving All My Love For You artist: Whitney Houston title: If I Told You That artist: Whitney Houston title: Exhale If I search for "Whitney Houston Exhale", I would expect that song to come up first, but it doesn't. Is there a special kind of matching or field setup I need to do for that? -- Alex Thurlow Blastro Networks http://www.blastro.com http://www.roxwel.com http://www.yallwire.com
Undefined field price on Dismax query
Hi guys, Based on some suggestions, I'm trying to use the dismax query type. I'm getting a weird error though that I think it related to the default test data set. From the query tool (/solr/admin/form.jsp), I put in this: Statement: artist:test title:test +type:video query type: dismax The rest is left as defaults. I get this error page: HTTP ERROR: 400 undefined field price RequestURI=/solr/select I am running out of the "example" dir still, but I made my own custom schema and deleted the index before inserting my new data. Am I missing something that needs to be cleared? Query type=standard works fine here. Thanks, Alex
Re: Undefined field price on Dismax query
Aha. That appears to be the issue. I hadn't realized that the query handler had all of those definitions there. -Alex On 3/16/2010 6:56 PM, Erick Erickson wrote: I suspect your problem is that you still have "price" defined in solrconfig.xml for the dismax handler. Look for the section You'll see price defined as one of the default fields for "fl" and "bf". HTH Erick On Tue, Mar 16, 2010 at 6:55 PM, Alex Thurlow wrote: Hi guys, Based on some suggestions, I'm trying to use the dismax query type. I'm getting a weird error though that I think it related to the default test data set. From the query tool (/solr/admin/form.jsp), I put in this: Statement: artist:test title:test +type:video query type: dismax The rest is left as defaults. I get this error page: HTTP ERROR: 400 undefined field price RequestURI=/solr/select I am running out of the "example" dir still, but I made my own custom schema and deleted the index before inserting my new data. Am I missing something that needs to be cleared? Query type=standard works fine here. Thanks, Alex
Trouble getting results from Dismax query
I'm trying to use the Dismax request handler, and thanks to the list, I fixed one problem, which was the existing configs in solrconfig.xml. I'm now just not getting any result from the query though. I changed the dismax section in solrconfig.xml to this: dismax explicit 0.01 100 *:* artist title 0 title regex I'm using solr-php-client for my query, and the code looks like this: $params['qt'] = 'dismax'; $params['qf'] = 'title^100 artist^150 description^5 tags^'.$tagboost.' artist_title^500 featuring_artist^20 collaborators^50'; $params['pf'] = 'artist_title'; $query = "title:$search artist:$search description:$search tags:$search +type:$type artist_title:$search featuring_artist:$search collaborators:$search"; $response = $solr->search( $query, 0, 30 ,$params); The raw query ends up as this: /solr/select?qt=dismax&qf=title%5E100+artist%5E150+description%5E5+tags%5E10+artist_title%5E500+featuring_artist%5E20+collaborators%5E50&pf=artist_title&q=title%3Aakon+artist%3Aakon+description%3Aakon+tags%3Aakon+%2Btype%3Avideo+artist_title%3Aakon+featuring_artist%3Aakon+collaborators%3Aakon&version=1.2&wt=json&json.nl=map&start=0&rows=30 Responseheader is this: {"responseHeader":{"status":0,"QTime":9,"params":{"pf":"artist_title","start":"0","q":"title:akon artist:akon description:akon tags:akon +type:video artist_title:akon featuring_artist:akon collaborators:akon","qf":"title^100 artist^150 description^5 tags^10 artist_title^500 featuring_artist^20 collaborators^50","json.nl":"map","qt":"dismax","wt":"json","version":"1.2","rows":"30"}},"response":{"numFound":0,"start":0,"docs":[]}} If I remove the qt=dismax, I get results like I should. Can anyone shed some light? Thanks, Alex
Issue with exact matching
I'm trying to give a super boost to fields that match exactly, but it doesn't appear to be working. I have this: stored="true"/> sortMissingLast="true" omitNorms="true"> 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"~10 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
Re: Issue with exact matching
Thanks so much. That works really well now. So this brings up a complaint I have with the Solr documentation. I see very few actual examples. If I had seen any example of searching for a multi-word search, I assume it would have had these parentheses. -Alex On 3/18/2010 5:54 PM, Erick Erickson wrote: I only have time for a quick glance, but what jumps out is that this part: title:rude boy^100 probably isn't matching "boy" against your title field, it's matching "rude" against title, but "boy" against your default field and boosting the "boy" part. Try parenthesizing (at least that works in Lucene....). HTH Erick On Thu, Mar 18, 2010 at 5:06 PM, Alex Thurlow wrote: I'm trying to give a super boost to fields that match exactly, but it doesn't appear to be working. I have this: 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"~10 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