- 新手上路
- 了解基础对象
- 编写项目配置文件
- 管理索引
- 使用搜索
- 使用辅助工具
- 专题
编写第一个配置文件
Xunsearch
的配置文件是纯文本的 INI
格式,用任何文本编辑器均可编写,在 Unix
类型的系统下推荐
用 vi
,而 Windows
下可以用记事本或 EditPlus
进行编写。我们也正在计划不久的将来制作一个 Web
界面的编辑工具,以便进行可视化的设计以及约束检测。
Tip: 目前我们针对新手用户开发了一个 WEB 版本的在线配置文件编辑辅助工具,点击试用。
如果您是从头阅读到这儿,应该对配置文件也有了基本的了解,下面我们以传统的 discuz
论坛贴子为例子,
来学习编写配置文件。
由于我们只是对贴子进行搜索,所以只需要关心它的贴子表即可,表结构如下:
-- -- 表的结构 `cdb_posts` -- CREATE TABLE `cdb_posts` ( `pid` int(10) unsigned NOT NULL auto_increment, `fid` smallint(6) unsigned NOT NULL default '0', `tid` mediumint(8) unsigned NOT NULL default '0', `first` tinyint(1) NOT NULL default '0', `author` varchar(15) NOT NULL default '', `authorid` mediumint(8) unsigned NOT NULL default '0', `subject` varchar(80) NOT NULL default '', `dateline` int(10) unsigned NOT NULL default '0', `message` mediumtext NOT NULL, `useip` varchar(15) NOT NULL default '', `invisible` tinyint(1) NOT NULL default '0', `anonymous` tinyint(1) NOT NULL default '0', `usesig` tinyint(1) NOT NULL default '0', `htmlon` tinyint(1) NOT NULL default '0', `bbcodeoff` tinyint(1) NOT NULL default '0', `smileyoff` tinyint(1) NOT NULL default '0', `parseurloff` tinyint(1) NOT NULL default '0', `attachment` tinyint(1) NOT NULL default '0', `rate` smallint(6) NOT NULL default '0', `ratetimes` tinyint(3) unsigned NOT NULL default '0', `status` tinyint(1) NOT NULL default '0', PRIMARY KEY (`pid`), KEY `fid` (`fid`), KEY `authorid` (`authorid`), KEY `dateline` (`dateline`), KEY `invisible` (`invisible`), KEY `displayorder` (`tid`,`invisible`,`dateline`), KEY `first` (`tid`,`first`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
首先得搞明白我们要得到什么样的搜索效果,进行针对性的设计和分析才能确定需要哪些字段。在 这个案例中我们的需求是要对所有的论坛贴子进行标题、内容、作者全文检索,并希望搜索结果能 过滤回贴、按发表时间排序、能按版块过滤。明确了意图之后我们就只需要从数据表中提取必要的 字段即可。
pid
主键,必须的fid
按版块检索时需要用到tid
搜索结果阅读链接都是按 tid 来的,必备first
表示该贴子是否为楼主,过滤回贴时用到author
,authorid
按作者检索用得到subject
标题message
贴子内容dateline
发表时间,要用到
其它的有些字段,比如 invisible
, anonymous
表面看上去跟搜索结果也是有关系的,但
实际上这些可以在索引入库时进行处理和排除,完全没有必要放到搜索数据中去,所以不列入。
得到字段后,进一步分析各个字段的用途与写法。
pid
非常明显,它是主键,所以它的类型必须是id
fid
内容为数字的版块ID,但由于我们不需要对它进行排序或区间查找,所以用string
类型即可, 为了按版块检索,我们必须对它进行索引,而它也不需要分词,所以分词器用内置的full
。tid
内容也是数字的主题ID,我们暂不考虑按主题搜索,所以不需要索引,也没有排序等要求,所以 只要当作普通字段存储下来即可。first
用 1/0 不同值来表示是否为楼主,考虑到回贴过滤需求,它也需要索引,整个字段转换成一个 词即可,分词器当然选用full
。author
作者名字检索,考虑中文名支持,所以建议这个字段保留使用默认内置的scws
分词器。 由于希望在默认不指明字段的情况下也能检索作者字段,所以它的过索引方式应为both
。authorid
作者 ID,我们只用于搜索结果的作者链接,不需要索引。subject
标题类型为title
。message
主内容,类型为body
。dateline
时间戳记,由于需要排序,所以该字段不能存为string
,必须用numeric
,但不需要 进行任何索引。
自此字段分析与设计已然明了,下面给出完整的配置文件内容,实际使用时可以将文件保存至
$prefix/sdk/php/app/discuz.ini
。
project.name = discuz project.default_charset = GBK ;服务端用默认值 ;server.index = 8383 ;server.search = 8384 [pid] type = id [fid] index = self tokenizer = full [tid] [first] index = self tokenizer = full [author] index = both [authorid] [subject] type = title [message] type = body [dateline] type = numeric
$Id$
2条评论!
还在编写配置文件,不存在重启啊。如果是建索引完成后修改配置文件,那需要从新建立索引。
需不需要重启生效
请到论坛 登录 后刷新本页面!