sphinx-coreseek 优化指南

html_strip:HTML 标记清除

只保留标记之间的内容,HTML 标签和 HTML 注释会被删除。比如:

<a target="_blank" class="external-link" href="http://www.google.com">google</a>

开启 html_strip=1 后,就只保留内容 google。默认情况 html_strip 的值是 0,表示禁用,1 表示启用。如果要把标签之间的内容也删除的话,那么就要使用 html_remove_elements 属性了。

看下面这个例子:

sphinx-coreseek 优化指南

第一条记录看上去就是无相关的,点进去看了下,就是一个一个视频链接,里面有这么一段:

<embed src="http://player.youku.com/player.php/Type/Folder/Fid/18841125/Ob/1/sid/XNTA1MTg0NDg0/v.swf" 

type="application/x-shockwave-flash" width="660" height="500" autostart="true" loop="true">

这个 embed 标签里面有一个链接包含 php 的字符。我们设置 html_strip=1,再来看结果就只有一条记录了。

sphinx-coreseek 优化指南

exceptions

在搜索 c++、c# 等词的时候,包含 c 的内容都搜索出来了,显然这不是我们想要的,exceptions 的功能就是将一个或多个 Token 映射成一个单独的关键字,与 wordforms 类似,但是也有很多不同的地方。

sphinx-coreseek 优化指南

  • exceptions 大小写敏感,wordforms 大小写无关
  • exeptions 可以使用 charset_table 中没有的特殊符号,wordforms 完全遵从 charset_table。

示例:

AT & T => AT&T

AT&T => AT&T

Standarten Fuehrer => standartenfuhrer

Standarten Fuhrer => standartenfuhrer

MS Windows => ms windows

Microsoft Windows => ms windows

C++ => cplusplus

c++ => cplusplus

C plus plus => cplusplus

注意 => 的字符串都是单个完成的字符串,无论是 & 还是空格都是看作单个字符串的一部分。

sphinx-coreseek 优化指南

exception 和 wordform 还相互影响

wordforms:词形字典

wordforms = /usr/local/sphinx/data/wordforms.txt

用来将不同形式的词形编程单一的标准形式,如:microsoft、ms、微软 变成同一的形式 microsoft。格式是:

ms > microsoft

微软 > microsoft

sphinx-coreseek 优化指南

目标词形 microsoft 只能是单个词,比如:

 zhang san > 张三

查询 chang san 的时候,只匹配张,就是说只要是含有 张 字的都匹配,无论是张三还是张四。

一元切分模式

有时候使用一元切分模式,反而降低的搜索的准确率。比如我在搜索 小小 时,使用一元分词后,凡是含有 小 字的内容都被搜索出来了。显然不是我们想要的。

如果不想启动一元分词时,charset_type = utf-8,要改成 charset_type = zh_cn.utf-8,否则是搜出去东西来的。

sphnix 的匹配模式

  • SPH_MATCH_ALL:匹配所有查询词,这是 sphinx 的默认模式,比如搜索:中国,那么只有文档中同时出现 中国 二字时才会匹配,当然 中国 可以不出现在一块。
  • SPH_MATCH_ANY:匹配任意一个
  • SPH_MATCH_PHRASE

数据源的一些限制条件

document 的 id 必须是唯一的无符号的非 0 的整数,直白点就是要大于 0 的整数,至于是 32 位还是 64 位的根据自己的喜好设定。我们的线上环境就有一个 id 为 -1 的数据,搜不出来,该主键是非常麻烦的,所以在新建数据的时候就要特别注意。

BuildExcerpts 产生文本摘要和高亮

function BuildExcerpts ( $docs, $index, $words, $opts = array() )

docs:包含文档内容的数组

index:索引

words:需要高亮的字符串

opts:字典类型

以上是 sphinx-coreseek 优化指南 的全部内容, 来源链接: utcz.com/p/233288.html

回到顶部