当前位置: 首页 > news >正文

solr搜索分词优化

solr服务器配置好在搜索时经常会搜出无关内容,把不该分的词给分了,导致客户找不到自己需要的内容,那么我们就从配置词典入手解决这个问题。

首先需要知道自带的词典含义:

停止词:停止词是无功能意义的词,比如is   、a   、are  、”的”,“得”,“我” 等,这些词会在句子中多次出现却无意义,所以在分词的时候需要把这些词过滤掉。

扩展词库:就是不想让哪些词被分开,让他们分成一个词。

同义词:假设有一个电子商务系统,销售书籍,提供了一个搜索引擎,一天,市场部的人要求客户在搜索书籍时,同义词就是比如输入“电子”,除了展示电子相关的书籍,还需要展现“机器”相关的书籍。

 

1. 配置停止词和扩展词库。

将IKAnalyzer解压文件夹下的stopword.dic和IKAnalyzer.cfg.xml复制到tomcat/webapps/solr/WEB-INF/classes下,再新建一个ext.dic,里面的格式和stopword.dic一致。

并修改IKAnalyzer.cfg.xml如下面的格式可以配置多个停止词或者扩展词库文件。

复制代码
<!-- lang: xml -->
<properties> 
<comment>IK Analyzer 扩展配置</comment>
<!--用户可以在这里配置自己的扩展字典-->
<entry key="ext_dict">ext.dic;</entry>
<!--用户可以在这里配置自己的扩展停止词字典-->
<entry key="ext_stopwords">english_stopword.dic;stopword.dic</entry>
复制代码

2.同义词配置

在solr数据文件conf目录下schema.xml 中加入以下两个字段:

<!-- lang: xml -->
<field name="id" type="string" indexed="true" stored="true" required="true" /> <field name="description" type="text_syn" indexed="true" stored="true" />

在 schema.xml 中增加 text_syn 类型的定义:

复制代码
<!-- lang: xml -->
<fieldType name="text_syn" class="solr.TextField"> <analyzer type="query"> <tokenizer class="solr.WhitespaceTokenizerFactory"/> <filter class="solr.LowerCaseFilterFactory"/> </analyzer> <analyzer type="index"> <tokenizer class="solr.WhitespaceTokenizerFactory"/> <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false" /> <filter class="solr.LowerCaseFilterFactory"/> </analyzer> </fieldType>
复制代码

在相同的conf目录下的 synonyms.txt 中增加

西安,长安,13朝古都,陕西省会

那么在下次搜索西安时也会带出后面的。

3. 使用设计

针对每个商品设置搜索关键词,同步到扩展词库中;

全局设置不想被分词的词,放到停止词库中;

全局设置想关联的同义词,放到同义词中;

转载于:https://www.cnblogs.com/cuihongyu3503319/p/9344683.html

相关文章:

  • Windows server 2012配置WebDeploy发布网站
  • linux内核(五)虚拟文件系统
  • 如何屏蔽垃圾短信
  • 转载:手把手教你搭建 vue 环境
  • 在 win10 环境下,设置自己写的 程序 开机自动 启动的方法
  • 7-26 单词长度(15 分)
  • HDU 1258 Sum It Up(dfs 巧妙去重)
  • RPC 工作原理
  • MySql的replace into 语句
  • 大数据平台搭建-基础环境安装
  • SQLServer编写自己的切分函数 SPLIT和带排序的切割函数 SPLITSort
  • OPC和DCOM配置
  • 异步IO
  • supervisor管理uwsgi
  • 前端开发-HTML
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • Android路由框架AnnoRouter:使用Java接口来定义路由跳转
  • CSS 专业技巧
  • CSS实用技巧干货
  • LintCode 31. partitionArray 数组划分
  • maven工程打包jar以及java jar命令的classpath使用
  • Objective-C 中关联引用的概念
  • php面试题 汇集2
  • 从输入URL到页面加载发生了什么
  • 汉诺塔算法
  • 入职第二天:使用koa搭建node server是种怎样的体验
  • 使用 QuickBI 搭建酷炫可视化分析
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 算法之不定期更新(一)(2018-04-12)
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 项目实战-Api的解决方案
  • 延迟脚本的方式
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • 阿里云ACE认证之理解CDN技术
  • 第二十章:异步和文件I/O.(二十三)
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • !!java web学习笔记(一到五)
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (Matlab)使用竞争神经网络实现数据聚类
  • (poj1.3.2)1791(构造法模拟)
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (论文阅读30/100)Convolutional Pose Machines
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法
  • (转)jQuery 基础
  • (转)创业的注意事项
  • (转载)CentOS查看系统信息|CentOS查看命令
  • .htaccess配置常用技巧
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .NET MVC 验证码
  • .NET中两种OCR方式对比
  • @Autowired多个相同类型bean装配问题