Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Set default search fields in Apache Solr

Tags:

solr

solrnet

I am trying to Implement Apache Solr search through SolrNet library.So far I have managed to run an instance of Solr in my machine and make some queries based on specific fields. My code to do it looks like this

   var solr = ServiceLocator.Current.GetInstance<ISolrOperations<Product>>();
   var results = solr.Query(new SolrQueryByField("id", "SP2514N"));

This one works fine now,But I would like to make queries with out specifying a field , So that when I enter a search key word solr will look in to the all fields available and return a result.I have Found the code to make it in SolrNet library from here

        var solr = ServiceLocator.Current.GetInstance<ISolrOperations<Product>>();
        var results = solr.Query(new SolrQuery("SP2514N"));

But this never worked,When I drilled down to bottom ,I found that I need to set default search fields in Solr instance so that Solr will search that fields when nothing else is selected(This is how i understood it I am not sure about this). So I went to set default fields in Solr ,I took Solrconfig.XML and edited it like this

    <requestHandler name="/query" class="solr.SearchHandler" default="true">
     <lst name="defaults">
       <str name="echoParams">explicit</str>
       <str name="wt">json</str>
       <str name="indent">true</str>
       <str name="df">text</str>
       <str name="df">id</str>
     </lst>
  </requestHandler>

[just added <str name="df">id</str> this field as extra].But this too never helped And I am stuck ,Can any one tell me How I could set default search field in Solr correctly?Or am i doing any thing else wrong? I have Uploaded My Solrconfig file here

like image 845
None Avatar asked Oct 09 '13 05:10

None


2 Answers

I do not know about SolrNet library, but to make a default field for search you need to define DefaultSearchField in schema.xml i.e. <defaultSearchField>FieldName</defaultSearchField>.

You can find this file @ <SOLR_HOME>\apache-solr-3.6.0\example\example-DIH\solr\testsyndrome\conf\schema.xml

I hope that's what you are looking for.

like image 147
prerna Keshari Avatar answered Sep 22 '22 18:09

prerna Keshari


Don't start from SolrNet, use Solr's built-in Web Admin interface. Iterate there until you understand the request handlers and the parameters. Then, go back to SolrNet.

In your case, it seems that you changed default request handler and tried to use df parameter twice. I would stick to the original request handler for now just to avoid the extra issue.

With using df parameter, are you trying to search a single field or multiple fields? If single field, keep only one value for the parameter. If multiple, you need to switch to using eDisMax, where you can provide a set of fields.

Again, admin interface lets you experiment with it, then you can add it into the handler's default parameter.

like image 28
Alexandre Rafalovitch Avatar answered Sep 20 '22 18:09

Alexandre Rafalovitch