设为首页 收藏本站
查看: 1149|回复: 0

[经验分享] 搜索中文Solr Analysis And Solr Query

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-7-17 11:08:41 | 显示全部楼层 |阅读模式
  工作之余抽点时间出来写写博文,希望对新接触的朋友有帮助。今天在这里和大家一起学习一下搜索中文
         在应用Solr中文分词器IkAnalizer时,查询时其实不会对搜索句语停止切分词。比如搜索:华为手机,到得的结果只含包与“华为手机”完整配匹的Document,而题标,或者Tag含包"华为"或"手机"的Document并没有被搜索出来。基于这个原因,停止搜索时,须要先对搜索句语停止分词,组装终究搜索句语,然后停止搜索。
  1.应用IKAnalyzer来对中文停止析分
    




  2.应用此型类于关相属性
  
    
  

  3.对查询句语停止析分(应用text_chinese型类停止分词)
  public String analysisBeforeQuery(String queryTerm)
{
String nextQuery = "";
  
  SolrQuery query = new SolrQuery();
query.add(CommonParams.QT, "/analysis/field"); // query type
query.add(AnalysisParams.FIELD_VALUE, queryTerm);
query.add(AnalysisParams.FIELD_TYPE, "text_chinese");
//query.add(AnalysisParams.FIELD_NAME, "product_name");
  try
{
  /* solr应用text_chinese停止析分的结果
* {responseHeader={status=0,QTime=1},analysis={field_types={text_chinese={index={org.wltea.analyzer.lucene.IKTokenizer=[{text=华为,raw_bytes=[e5 8d 8e e4 b8 ba],start=0,end=2,type=CN_WORD,position=1,positionHistory=[1]}, {text=手机,raw_bytes=[e6 89 8b e6 9c ba],start=2,end=4,type=CN_WORD,position=2,positionHistory=[2]}, {text=手,raw_bytes=[e6 89 8b],start=2,end=3,type=CN_WORD,position=3,positionHistory=[3]}, {text=机,raw_bytes=[e6 9c ba],start=3,end=4,type=CN_CHAR,position=4,positionHistory=[4]}]}}},field_names={}}}
*/
  //对响应停止析解

    每日一道理
生活中受伤难免,失败跌倒其实不可怕,可怕的是因此而一蹶不振,失去了对人生的追求与远大的理想。没有一个人的前进道路是平平稳稳的,就算是河中穿梭航行的船只也难免颠簸,生活中所遇上的坎坷磨难不是偶尔给予的为难,而是必然所经受的磨练。
  NamedList analysis =  (NamedList) response.getResponse().get("analysis");// analysis node
NamedList field_types =  (NamedList) analysis.get("field_types");// field_types node
NamedList text_chinese =  (NamedList) field_types.get("text_chinese");// text_chinese node
NamedList index =  (NamedList) text_chinese.get("index");// index node
List list =  (ArrayList) index.get("org.wltea.analyzer.lucene.IKTokenizer");// tokenizer node
  // 在个每词条间中加上空格,为个每词条停止或算运
  for(Iterator iter = list.iterator(); iter.hasNext();)
{
nextQuery += iter.next().get("text") + " ";
}
  }
catch (SolrServerException e)
{
e.printStackTrace();
}

return nextQuery.trim(); // 去掉最后一个空格并返回组装的字符串

  }
  4.停止终究查找
  public void queryDocuments(String queryTerm)
{
String query_term = analysisBeforeQuery(queryTerm);

SolrQuery solrQuery = new SolrQuery(query_term);
solrQuery.add("defType", "dismax");
solrQuery.add("qf", "product_name product_tags^10");
solrQuery.add("fl", "*");
  try
{
QueryResponse queryResponse = solrServer.query(solrQuery);
for(SolrDocument doc : queryResponse.getResults())
{
// 执行操纵
  //.....
  }
}
catch (SolrServerException e)
{
e.printStackTrace();
}
}
  
  这里,略省了SolrServer的命生:private static HttpSolrServer solrServer = new HttpSolrServer("http://localhost:8080/solr/product/");
  至此,我们可以搜索到期望的结果了.....
  

  Next Blog, Readers.....
  
  

  
  文章结束给大家分享下程序员的一些笑话语录: 大家喝的是啤酒,这时你入座了。
你给自己倒了杯可乐,这叫低配置。
你给自已倒了杯啤酒,这叫标准配置。
你给自己倒了杯茶水,这茶的颜色还跟啤酒一样,这叫木马。
你给自己倒了杯可乐,还滴了几滴醋,不仅颜色跟啤酒一样,而且不冒热气还有泡泡,这叫超级木马。
你的同事给你倒了杯白酒,这叫推荐配置。
菜过三巡,你就不跟他们客气了。
你向对面的人敬酒,这叫p2p。
你向对面的人敬酒,他回敬你,你又再敬他……,这叫tcp。
你向一桌人挨个敬酒,这叫令牌环。
你说只要是兄弟就干了这杯,这叫广播。
有一个人过来向这桌敬酒,你说不行你先过了我这关,这叫防火墙。
你的小弟们过来敬你酒,这叫一对多。
你是boss,所有人过来敬你酒,这叫服务器。
酒是一样的,可是喝酒的人是不同的。
你越喝脸越红,这叫频繁分配释放资源。
你越喝脸越白,这叫资源不释放。
你已经醉了,却说我还能喝,叫做资源额度不足。
你明明能喝,却说我已经醉了,叫做资源保留。
喝酒喝到最后的结果都一样
你突然跑向厕所,这叫捕获异常。
你在厕所吐了,反而觉得状态不错,这叫清空内存。
你在台面上吐了,觉得很惭愧,这叫程序异常。
你在boss面前吐了,觉得很害怕,这叫系统崩溃。
你吐到了boss身上,只能索性晕倒了,这叫硬件休克。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-87606-1-1.html 上篇帖子: solr在Linux上配置多个core 下篇帖子: 利用SOLR搭建企业搜索平台 之——solr配置solrconfig.xml
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表