Xunsearch PHP-SDK v1.4.17 权威指南

编写第一个配置文件

Xunsearch 的配置文件是纯文本的 INI 格式,用任何文本编辑器均可编写,在 Unix 类型的系统下推荐 用 vi,而 Windows 下可以用记事本或 EditPlus 进行编写。我们也正在计划不久的将来制作一个 Web 界面的编辑工具,以便进行可视化的设计以及约束检测。

Tip: 目前我们针对新手用户开发了一个 WEB 版本的在线配置文件编辑辅助工具,点击试用

如果您是从头阅读到这儿,应该对配置文件也有了基本的了解,下面我们以传统的 discuz 论坛贴子为例子, 来学习编写配置文件。

1. Discuz 的论坛贴子 MySQL 表结构?

由于我们只是对贴子进行搜索,所以只需要关心它的贴子表即可,表结构如下:

-- 
-- 表的结构 `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;

2. 搜索的设计与分析?

首先得搞明白我们要得到什么样的搜索效果,进行针对性的设计和分析才能确定需要哪些字段。在 这个案例中我们的需求是要对所有的论坛贴子进行标题、内容、作者全文检索,并希望搜索结果能 过滤回贴、按发表时间排序、能按版块过滤。明确了意图之后我们就只需要从数据表中提取必要的 字段即可。

其它的有些字段,比如 invisible, anonymous 表面看上去跟搜索结果也是有关系的,但 实际上这些可以在索引入库时进行处理和排除,完全没有必要放到搜索数据中去,所以不列入。

3. 字段设计与分析?

得到字段后,进一步分析各个字段的用途与写法。

4. 配置文件结果?

自此字段分析与设计已然明了,下面给出完整的配置文件内容,实际使用时可以将文件保存至 $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$
Copyright © 2008-2011 by 杭州云圣网络科技有限公司
All Rights Reserved.