Wednesday, 15 September 2010

How to achive Autocomplete using solr for nested index? -



How to achive Autocomplete using solr for nested index? -

as above index structure: want fetch manufacturer corresponding models using solr auto complete. suppose passed appliancecatagory=boilers, manufacture=ariston , query string "cla" models corresponding ariston manufacture should display.. done java coding fetch values given below: able fetch models starting lower case character if passing lower case query string , same upper case : please help!! tone.

<i>{ "manuals": [ { "appliancecategory": "boilers", { "manufacturer": "ariston", { "models": [ "clas 24 evo", "clas 30 evo", "lap scheme 24 evo", "last scheme 30 evo" "clas he", "clas ba", ], } "manufacturer": "baxi", { "models": [ "baxi 1", "baxi 2", "clas 3" ], } }, } { "appliancecategory": "electrics", { "manufacturer": "lipton", { "models": [ "plas he", "plas 30", "plas 38 evo", "plas sm 18 evo", "plas hem 24 evo", "plas syst" ], } }, } ] } java code: private static void getmodelvalues(solrserver server,string querystring) throws solrserverexception{ solrquery query = new solrquery(); query.setparam("wt", "json"); query.setquery("boilers").setquery("ariston"); query.setfacet(true); query.addfacetfield("models"); query.setfacetmincount(1); query.setfacetprefix(querystring); queryresponse response = server.query(query); list<facetfield> facetfield = response.getfacetfields(); list<string> listofmodel=null; (int j = 0; j < facetfield.size(); j++) { listofmodel = new arraylist<string>(); for(count count: facetfield.get(j).getvalues()){ listofmodel.add(count.getname()); } system.out.println("this model list---->"+listofmodel); gson gson1 = new gson(); system.out.println("models:"+gson1.tojson(listofmodel)); } } <field name="manufacturer" type="string" indexed="true" stored="true" required="true" multivalued="true" docvalues="true" /> <field name="models" type="string" indexed="true" stored="true" termvectors="true" termpositions="true" termoffsets="true" required="true" multivalued="true" docvalues="true" /> <field name="appliancecategory" type="string" indexed="true" stored="true" required="true" multivalued="true" docvalues="true" /> <field name="manual" type="string" indexed="true" stored="true" required="true" multivalued="false" docvalues="true" /> <field name="models_autocomplete" type="text_autocomplete" indexed="true" stored="true" multivalued="true"/> <!--copy field --> <copyfield source="manufacturer" dest="text"/> <copyfield source="models" dest="models_autocomplete"/> <copyfield source="appliancecategory" dest="text"/> <copyfield source="manual" dest="text" /> </i>

your /sugest searchhandler defines "spellcheck.dictionary" twice : 1 time title_autocomplete field , 1 time models field. aside fact don't know how solr behaves when having same key specified twice, don't see models_autocomplete field specified anywhere in config, neither default searches or sugest components utilize it's dictionary query it.

edit :

switch model models_autocomplete , see if works . consider switching default qparser edismax , specifying multiple search fields. of course of study assuming autosugest requests utilize /sugest url

solr autocomplete

No comments:

Post a Comment