参考官方wiki:// 参考(refer to)http://wiki.apache.org/solr/TermsComponent
主要结果类:TermsResponse, TermsResponse.Term;
在solrconfig.xml中的相关设置:
<!-- Terms Component http://wiki.apache.org/solr/TermsComponent A component to return terms and document frequency of those terms --> <searchComponent name="terms" class="solr.TermsComponent"/> <!-- A request handler for demonstrating the terms component --> <requestHandler name="/terms" class="solr.SearchHandler" startup="lazy"> <lst name="defaults"> <bool name="terms">true</bool> </lst> <arr name="components"> <str>terms</str> </arr> </requestHandler>
solrj进行查询Terms的代码:
package cn.wzb; import java.util.List; import java.util.Map; import java.util.Set; import org.apache.solr.client.solrj.SolrQuery; import org.apache.solr.client.solrj.SolrServer; import org.apache.solr.client.solrj.SolrServerException; import org.apache.solr.client.solrj.impl.HttpSolrServer; import org.apache.solr.client.solrj.response.QueryResponse; import org.apache.solr.client.solrj.response.TermsResponse; public class TestTerms { /** * @param args */ public static void main(String[] args) { //实例化SolrServer,以获取与solrServer的通信 SolrServer solrServer = new HttpSolrServer("http://localhost:8983/solr"); //创建查询参数以及设定的查询参数 SolrQuery params = new SolrQuery(); params.set("q", "*:*"); params.set("qt", "/terms"); //parameters settings for terms requestHandler // 参考(refer to)http://wiki.apache.org/solr/TermsComponent params.set("terms", "true"); params.set("terms.fl", "introduction", "name", "text"); params.set("terms.lower", ""); //term lower bounder开始的字符 params.set("terms.lower.incl", "true"); params.set("terms.mincount", "1"); params.set("terms.maxcount", "100"); //http://localhost:8983/solr/terms?terms.fl=text&terms.prefix=学 // using for auto-completing params.set("terms.prefix", "学"); params.set("terms.regex", "学+.*"); params.set("terms.regex.flag", "case_insensitive"); params.set("terms.limit", "20"); params.set("terms.upper", ""); //结束的字符 params.set("terms.upper.incl", "false"); params.set("terms.raw", "true"); params.set("terms.sort", "count"); //查询并获取相应的结果! QueryResponse response = null; try { response = solrServer.query(params); } catch (SolrServerException e) { System.err.println(e.getMessage()); e.printStackTrace(); } catch (Exception e) { System.err.println(e.getMessage()); e.printStackTrace(); } finally { solrServer.shutdown(); } //获取相关的查询结果 if(response != null ){ System.out.println("查询耗时(ms):" + response.getQTime()); //System.out.println(response.toString()); TermsResponse termsResponse = response.getTermsResponse(); if(termsResponse != null) { Map<String, List<TermsResponse.Term> > termsMap = termsResponse.getTermMap(); for(Map.Entry<String, List<TermsResponse.Term> > termsEntry : termsMap.entrySet()) { System.out.println("Field Name: " + termsEntry.getKey()); List<TermsResponse.Term> termList = termsEntry.getValue(); System.out.println("Term : Frequency"); for(TermsResponse.Term term : termList) { System.out.println(term.getTerm() + " : " + term.getFrequency()); } System.out.println(); } System.out.println("\n\n\n"); //another way Set<String> fieldSet = termsMap.keySet(); for(String field : fieldSet) { System.out.println("Field Name : " + field); List<TermsResponse.Term> termList = termsResponse.getTerms(field); System.out.println("Term : Frequency"); for(TermsResponse.Term term : termList) { System.out.println(term.getTerm() + " : " + term.getFrequency()); } System.out.println(); } } } //关闭SolrServer连接实例,释放资源 solrServer.shutdown(); } }
2012-8-17 16:23:29 org.apache.solr.client.solrj.impl.HttpClientUtil createClient 信息: Creating new http client, config:maxConnections=128&maxConnectionsPerHost=32&followRedirects=false 查询耗时(ms):0 Field Name: text Term : Frequency 学习 : 4 学生 : 3 Field Name: name Term : Frequency Field Name: introduction Term : Frequency 学习 : 4 学生 : 3 Field Name : text Term : Frequency 学习 : 4 学生 : 3 Field Name : name Term : Frequency Field Name : introduction Term : Frequency 学习 : 4 学生 : 3
2012-8-17 16:30:44 org.apache.solr.client.solrj.impl.HttpClientUtil createClient 信息: Creating new http client, config:maxConnections=128&maxConnectionsPerHost=32&followRedirects=false 查询耗时(ms):0 Field Name: text Term : Frequency , : 5 人 : 5 他 : 5 学习 : 4 一个 : 3 好 : 3 学生 : 3 是 : 3 bbbfoo : 2 了 : 2 优秀 : 2 工作 : 2 开始 : 2 毕业 : 2 现在 : 2 aaabar : 1 aaafoo : 1 baraaa : 1 bazaaa : 1 bbbbar : 1 Field Name: name Term : Frequency 张三 : 1 李四 : 1 江八 : 1 沈六 : 1 王五 : 1 Field Name: introduction Term : Frequency , : 5 人 : 5 他 : 5 学习 : 4 一个 : 3 好 : 3 学生 : 3 是 : 3 bbbfoo : 2 了 : 2 优秀 : 2 工作 : 2 开始 : 2 毕业 : 2 现在 : 2 aaabar : 1 aaafoo : 1 baraaa : 1 bazaaa : 1 bbbbar : 1 Field Name : text Term : Frequency , : 5 人 : 5 他 : 5 学习 : 4 一个 : 3 好 : 3 学生 : 3 是 : 3 bbbfoo : 2 了 : 2 优秀 : 2 工作 : 2 开始 : 2 毕业 : 2 现在 : 2 aaabar : 1 aaafoo : 1 baraaa : 1 bazaaa : 1 bbbbar : 1 Field Name : name Term : Frequency 张三 : 1 李四 : 1 江八 : 1 沈六 : 1 王五 : 1 Field Name : introduction Term : Frequency , : 5 人 : 5 他 : 5 学习 : 4 一个 : 3 好 : 3 学生 : 3 是 : 3 bbbfoo : 2 了 : 2 优秀 : 2 工作 : 2 开始 : 2 毕业 : 2 现在 : 2 aaabar : 1 aaafoo : 1 baraaa : 1 bazaaa : 1 bbbbar : 1