solr 实现拼音匹配

最近实现了一个拼音检索

                向大家介绍一下

             1.用solr suggest自动匹配 在 solrconfig.xml添加这样配置

          
  string
 
  suggest
  org.apache.solr.spelling.suggest.Suggester
  org.apache.solr.spelling.suggest.tst.TSTLookup
  text
  0.005
  true
  freq
  ../dic/dict.txt   ----拼音词库地址
 

 
 

 
 
  true
  suggest
  true
  10
  true
 

 
  suggest
 

 


二  调用

/**
     *

方法名:suggester


     *

功能:用于自动搜索,拼音查询查询匹配相近关键字


     *

作者:陈佳


     *

编写日期:2011-12-12


     *

查询参数:parame


     */
    public JSONObject suggester(String preste){
        List list=new ArrayList();
        String bsString=cp.intercepted(preste);
        SolrQuery q = new SolrQuery().setQueryType("/suggest").setQuery(bsString);
        QueryResponse queryResponse;
        JSONArray arr=new JSONArray();
    
        JSONObject json = new JSONObject();
        try {

            log.info(q);
            queryResponse = ad.solrServer.query(q);
            try {
                List tags =(List) ((NamedList) ((NamedList) ((NamedList)queryResponse.getResponse().get("spellcheck")).get("suggestions")).get(bsString)).get("suggestion");
                  for(int i=0;i                       JSONObject obj=new JSONObject();
                      String [] bStrings=tags.get(i).toString().split(" ");
                      Map map=    queryCount(bStrings[1].toString());
                      obj.put("name", bStrings[1]);
                      obj.put("count",map.get("count"));
                      arr.put(obj);
                  }
                  json.put("flag", "1");
                  json.put("resp_data", arr);
//                  json.put("value", preste);
            } catch (Exception e) {
                json.put("flag", "0");
                return json;
            }
    
        } catch (Exception e) {
             e.printStackTrace();
             log.info(e+"Search类中的|suggester()|查询失败");
             return json;
        }
        return json;
    
        
    }


    


你可能感兴趣的:(solr)