solr长文本检索

在我们使用solr的时候,我们会遇到关键词检索跟长文本检索等需求,在工作中很多时候接触的是关键词所以没怎么去关注长文本的检索,最近在项目中遇到了长文本的检索,所以在此写下自己的总结,希望对遇到相应问题的朋友一个参考.

1.先上官方解决方法

官方地址,solr官方为我们提供了分析器的配置方法,大家可以点击链接,查看更加详细的文档。

  • 官方推荐在schema.xml中使用添加field type来解决长文本检索的问题,在长文本中,我们是无法通过某个关键词去检索到相对于的文本的,所有通过添加相对于的field type来对长文本进行分析、分词形成一个关键词数组,这时我们再通过关键词就可以检索到相对于的文本了。
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100"> 
  <analyzer type="index"> 
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
    <!-- in this example, we will only use synonyms at query time
    <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
    -->
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
</fieldType>

# 然后在指定field时,再指定定义好的field type
<field name="title" type="text_general" indexed="true" stored="true"/>
<field name="name" type="text_general" indexed="true" stored="true"/> 

其实在solr中已经存在text_general这个filed type大家可以在此基础上进行增删

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 点我查看本文集的说明及目录。 本项目相关内容( github传送 )包括: 实现过程: CH1 创建一个博客应用 ...
    学以致用123阅读 1,522评论 1 3
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,280评论 19 139
  • 拍摄时间:10.06 拍摄地点:成都 拍摄器材:索尼a6000 图片版权归本人所有,图片授权于简书用于设置为app...
    旅行家大飞阅读 274评论 0 0
  • 总有人看不起你,这是必然的,我们不必做的让每个人都满意,那样活着真心累,不必刻意在意别人的眼光,纵使自己烂透了,也...
    醉不可述阅读 98评论 0 0
  • 一、转型失败企业存在八大共性问题 转型战略不明 团队认识不同 执行不能到位 客户大量流失 部门本位主义 公司内耗严...
    无间行者lee阅读 688评论 0 0