Querying Solr without specifying field names
Asked Answered
S

6

16

I'm new to using Solr, and I must be missing something.

I didn't touch much in the example schema yet, and I imported some sample data. I also set up LocalSolr, and that seems to be working well.

My issue is just with querying Solr in general. I have a document where the name field is set to tom. I keep looking at the config files, and I just can't figure out where I'm going awry. A bunch of fields are indexed and stored, and I can see the values in the admin, but I can't get querying to work properly. I've tried various queries (http://server.com/solr/select/?q=value), and here are the results:

**Query:** ?q=tom
**Result:** No results

**Query:** q=\*:\*
**Result:** 10 docs returned

**Query:** ?q=*:tom
**Result:** No results

**Query:** ?q=name:tom
**Result:** 1 result (the doc with name : tom)

I want to get the first case (?q=tom) working. Any input on what might be going wrong, and how I can correct it, would be appreciated.

Sexism answered 27/1, 2010 at 1:58 Comment(0)
R
17

Set <defaultSearchField> to name in your schema.xml

The <defaultSearchField> Is used by Solr when parsing queries to identify which field name should be searched in queries where an explicit field name has not been used.

You might also want to check out (e)dismax instead.

Rasmussen answered 27/1, 2010 at 2:47 Comment(2)
Nice! This was exactly what I needed. I didn't see this option before, and now having a bunch of copyfields pointing to a large "text" field makes sense. Thanks so much!Sexism
I have changed it in my solconfig.xml file, i am using SOLR 7.2.0Variole
D
6

I just came across to a similar problem... Namely I have defined multiple fields (that did not exist in the schema.xml) to describe my documents, and want to search/query on the multiple fields of the document, not only one of them (like the "name" in the above mentioned example).

In order to achieve this, I have created a new field ("compoundfield"), where I then put/copyField my defined fields (just like the "text" field on the schema.xml document that comes with Solr distribution). This results in something like this:

coumpoundfield definition:

<field name="compoundfield" type="text_general" indexed="true" stored="false" multiValued="true"/>

defaultSearchField:

<!-- field for the QueryParser to use when an explicit fieldname is absent -->
<defaultSearchField>compoundfield</defaultSearchField>

<!-- SolrQueryParser configuration: defaultOperator="AND|OR" -->
<solrQueryParser defaultOperator="OR"/>

<!-- copyField commands copy one field to another at the time a document
    is added to the index.  It's used either to index the same field differently,
    or to add multiple fields to the same field for easier/faster searching.  -->
<!-- ADDED Fields -->
<copyField source="field1" dest="compoundfield"/>
<copyField source="field2" dest="compoundfield"/>
<copyField source="field3" dest="compoundfield"/>

This works fine for me, but I am not sure if this is the best way to make such a "multiple field" search...

Cheers!

Decern answered 10/11, 2011 at 13:41 Comment(0)
T
2

It seems that a DisMax parser is the right thing to use for this end.

Related stackoverflow thread here.

Triclinium answered 23/10, 2012 at 15:18 Comment(1)
On second thought; using copyField to a consolidated field may be the simpler option.Triclinium
E
2

The current solution is deprecated in newer versions of lucene/solr. To change the default search field either use the df parameter or change the field that is in:

  <initParams 
path="/update/**,/query,/select,/tvrh,/elevate,/spell,/browse">
    <lst name="defaults">
      <str name="df">default_field</str>
    </lst>
  </initParams>

inside the solrconfig.xml

Note I am using a non-managed schema and solr 7.0.0 at the time of writing

Extrasensory answered 5/10, 2017 at 10:36 Comment(0)
R
0

Going through the solr tutorial is definitely worth your time: http://lucene.apache.org/solr/tutorial.html

My guess is that the "name" field is not indexed, so you can't search on it. You'd need to change your schema to make it indexed.

Also make sure that your XML actually lines up with the schema. So if you are adding a field named "name" in the xml, but the schema doesn't know about it, then Solr will just ignore that field (ie it won't be "stored" or "indexed").

Good luck

Rotifer answered 27/1, 2010 at 2:8 Comment(2)
Field is definitely indexed. Also, if it wasn't, I couldn't do some of the queries I listed, right? Something like name:tom wouldn't work, if I understand the docs.Sexism
yea Mauricio has it right, that you need to specify the defaultSearchField in the solrconfig. Also if you are using DisMax (which would allow ?q=tom to cause a search in multiple fields at the same time), there is another setting called "qf"Rotifer
R
0

Well, despite of setting a default search field is quite usefull i don't understand why don't you just use the solr query syntax:

......./?q=name:tom

or

......./?q=:&fq=name:tom

Refer answered 27/1, 2010 at 16:51 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.