陋室铭
永远也不要停下学习的脚步(大道至简至易)

posts - 2169,comments - 570,views - 413万

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. 使用设计

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

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

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

posted on   宏宇  阅读(578)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
历史上的今天:
2012-07-20 博弈论
2011-07-20 映射路由器到内网ip和端口
2011-07-20 DNS服务器
2007-07-20 设计模式和三层
2007-07-20 ASP.NET操作EXCEL时出现的错误 Retrieving the COM class factory for component with CLSID(转)
2007-07-20 获取Excel.dll
2007-07-20 总结: asp.net页面间数据传递(转)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示