文档章节

sphinx近义词处理

阿锋zxf
 阿锋zxf
发布于 2018/05/23 00:33
字数 444
阅读 24
收藏 0

Sphinx索引配置文件有个wordfroms属性,wordfroms对应的是一个简单的字典文本文件,供sphinx在索引和搜索的时候替换词语使用。

Sphinx

作用

本质上,就是将一个词替换成另一个。这通常被用来将不同的词形变成一个单一的标准形式(即将词的各种形态如“walks”,“walked”,“walking”变为标准形式“walk”)。

例如:

walks>walk
walked>walk
walking>walk

也可以用来实现取词根的例外情况,因为词形字典中可以找到的词不会经过词干提取器的处理。 索引和搜索中的输入词都会利用词典做规则化。因此要使词形字典的更改起作用,需要重新索引并重启searchd。

影响

Sphnix的词形支持被设计成可以很好地支持很大的字典,仅对索引速度有微小的影响,搜索速度则完全不受影响。例如,一百万个条目的字典会使索引速度下降1.5倍。

额外的内存占用大体上等于字典文件的大小,而且字典是被多个索引共享的,即如果一个50MB的词形字典文件被10个不同的索引使用了,那么额外的searchd内存占用就是大约50MB。

格式

  • 每行包括一个源词和一个目标词,二者用大于号分隔。
  • 忽略大小写。
  • 遵循charset_table选项指定的规则。

技巧

  • 简繁转换

例如:

張>张
學>学

当搜索“张学友”和“張學友”和“張学友”能得到一样的结果.

  • 拼音纠错

例如:

张>zhang
学>xue
友>you

当搜索“张学友”和“zhang xue you”能得到一样的结果.

© 著作权归作者所有

阿锋zxf
粉丝 9
博文 224
码字总数 235422
作品 0
深圳
程序员
私信 提问
全文检索引擎--Sphinx

Sphinx是一个基于SQL的全文检索引擎,可以结合MySQL,PostgreSQL做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。Sphinx特别为一些脚本语言设...

匿名
2008/12/05
142.6K
6
Sphinx(全文搜索)【资料整理】

Sphinx   “斯芬克司之谜使我们顺从自然。当迷雾逝去之后,我们会更加注意目前的需要。”——索福克尔斯   斯芬克司最初源于古埃及的神话,它被描述为长有翅膀的怪,通常为雄性,是“仁慈...

为梦而来
2014/04/08
150
0
使用PHP+Sphinx建立高效的站内搜索引擎

本文摘自《草根》杂志第四期 1. 为什么要使用Sphinx 假设你现在运营着一个论坛,论坛数据已经超过100W,很多用户都反映论坛搜索的速度非常慢,那么这时你就可以考虑使用Sphinx了(当然其他的...

张沫
2010/10/15
24.3K
6
使用PHP+Sphinx建立高效的站内搜索引擎

1. 为什么要使用Sphinx 假设你现在运营着一个论坛,论坛数据已经超过100W,很多用户都反映论坛搜索的速度非常慢,那么这时你就可以考虑使用Sphinx了(当然其他的全文检索程序或方法也行)。 ...

晨曦之光
2012/03/09
329
0
sphinx索引部分源码续——过程:连接到CSphSource对应的sql数据源,通过fetch row取其中一行,然后解析出field,分词,获得wordhit,最后再加入到CSphSource的Hits里

后面就是初始化一些存储结构,其中重点说下缓存出来的几个临时文件分别的作用。结尾时tmp0的存储的是被上锁的Index,有些Index正在被查询使用 故上锁。tmp1,即对应将来生成的spp文件,存储词...

桃子红了呐
2017/11/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Android Binder机制 - interface_cast和asBinder讲解

研究Android底层代码时,尤其是Binder跨进程通信时,经常会发现interface_cast和asBinder,很容易被这两个函数绕晕,下面来讲解一下: interface_cast 下面根据下述ICameraClient例子进行分析...

天王盖地虎626
昨天
5
0
计算机实现原理专题--存储器的实现(二)

计算机实现原理专题--存储器的实现(一)中描述了一种可以记住输入端变化的装置。现需要对其功能进行扩充,我们将上面的开关定义为置位,下面的开关定义为复位,然后需要增加一个保持位,当保...

FAT_mt
昨天
3
0
集合--Collection与迭代

1.1Collection 集合 集合:集合是Java提供的一种容器技术,可以用来存储多个数据 集合与数组的区别: 数组的长度是固定的,集合的长度是可变的 数组中存储的是同类型的元素,存储基本数据类型...

Firefly-
昨天
10
0
聊聊rocketmq的consumeTimeout

序 本文主要研究一下rocketmq的consumeTimeout consumeTimeout rocketmq-client-4.5.2-sources.jar!/org/apache/rocketmq/client/consumer/DefaultMQPushConsumer.java public class Defaul......

go4it
昨天
2
0
JAVA--高级基础开发

Day13[Map集合练习题] 练习一:Map接口的特点 请简述Map 的特点: Map集合中存放的数据都是键值对,并且键不能相同,值可以相同。 Map集合中的Key是根据Set集合来存放的。 Map集合可以使用n...

李文杰-yaya
昨天
17
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部