2010/11/17 Jón Helgi Jónsson <jonjons...@gmail.com>: > I'm using index time boosting and need to specify every field I want > to search (not use copy fields) or else the boosting wont work. > > This query with 1 saerchterm works fine, boosts look good: > > http://localhost:8983/solr/select/? > q=companyName:foo > +descriptionTxt:verslun > &fl=*%20score&rows=10&start=0 > > However if I have 2 words in the query and do it like this boosting > seems not to be working > > http://localhost:8983/solr/select/? > q=companyName:foo+bar > +descriptionTxt:foo+bar > &fl=*%20score&rows=10&start=0 > > Its probably using the default search field for the second word which > has no boosting configured. How do I go about this? > > Thanks, > Jon >
Jon, You have a few options here, depending on what you want to achieve with your query: 1. If you're trying to do a phrase query, you simply need to ensure that your phrases are quoted. The default behavior in SOLR is to split the phrase into multiple chunks. If a word is not preceded with a field definition, then SOLR will automatically apply the word(s) as if you had specified the default field. So for your example, SOLR would parse your query into companyName:foo defaultField:bar descriptionTxt:foo defaultField:bar. 2. You can use the dismax query plugin instead of the standard query plugin. You simply configure the dismax section of your solrconfig.xml to your liking - you define which fields to search, apply any special boosts for your needs, etc (http://wiki.apache.org/solr/DisMaxQParserPlugin) - and then you simply feed the query terms without naming your fields (i.e., q=foo+bar), along with telling SOLR to use dismax (i.e., qt=whatever_you_named_your_dismax_handler). 3. If phrase queries are not important to you, you can manually prefix each term in your query with the field you wish to search; for example, you would do companyName:foo companyName:bar descriptionTxt:foo descriptionTxt:bar. Whichever way you decide to go, the best thing that you can do to understand SOLR and how it's working in your environment is to append debugQuery=on to the end of your URL; this tells SOLR to output information about how it parsed your query, how long each component took to run, and some other useful debugging information. It's very useful, and has come in handy several times here where I'm at when I wanted to know why SOLR returned the results (or didn't return) that I expected. I hope this helps. - Ken