Xunsearch PHP-SDK v1.4.9 API 参考文档

# XSFieldScheme

包 | XS
继承关系 | class XSFieldScheme
实现接口 | IteratorAggregate, Traversable
版本 | 1.0.0
源代码 | sdk/php/lib/XSFieldScheme.class.php

XS 数据字段方案 每个方案包含若干个字段结构对象 XSFieldMeta 每个方案必须并且只能包含一个类型为 ID 的字段, 支持 foreach 遍历所有字段

## Public 方法

隐去继承来的方法

名称 | 描述 | 定义于
--- | --- | ---
__toString() | 将对象转换为配置文件字符串 | XSFieldScheme
addField() | 添加字段到方案中 | XSFieldScheme
checkValid() | 判断该字段方案是否有效、可用 | XSFieldScheme
getAllFields() | 获取项目所有字段结构设置 | XSFieldScheme
getField() | 获取项目字段元数据 | XSFieldScheme
getFieldBody() | 获取内容字段元数据 | XSFieldScheme
getFieldId() | 获取主键字段元数据 | XSFieldScheme
getFieldTitle() | 获取标题字段元数据 | XSFieldScheme
getIterator() | IteratorAggregate 接口, 以支持 foreach 遍历访问所有字段 | XSFieldScheme
getVnoMap() | 获取所有字段的vno与名称映映射关系 | XSFieldScheme
logger() | 获取搜索日志的字段方案 | XSFieldScheme

## 方法明细

__toString() 方法

public void __toString()

源码: sdk/php/lib/XSFieldScheme.class.php#L33 (显示)
`public function __toString()
{
$str = '';
foreach ($this->_fields as $field) {
$str .= $field->toConfig() . "\n";
}
return $str;
}`

将对象转换为配置文件字符串

addField() 方法

public void addField(mixed $field, array $config=NULL)
$field | mixed | 若类型为 XSFieldMeta 表示要添加的字段对象, 若类型为 string 表示字段名称, 连同 $config 参数一起创建字段对象
$config | array | 当 $field 参数为 string 时作为新建字段的配置内容

源码: sdk/php/lib/XSFieldScheme.class.php#L139 (显示)
`public function addField($field, $config = null)
{
if (!$field instanceof XSFieldMeta) {
$field = new XSFieldMeta($field, $config);
}
if (isset($this->_fields[$field->name])) {
throw new XSException('Duplicated field name: `' . $field->name . '\'');
}
if ($field->isSpeical()) {
if (isset($this->_typeMap[$field->type])) {
$prev = $this->_typeMap[$field->type];
throw new XSException('Duplicated ' . strtoupper($config['type']) . ' field: `' . $field->name . '\' and `' . $prev . '\'');
}
$this->_typeMap[$field->type] = $field->name;
}
$field->vno = ($field->type == XSFieldMeta::TYPE_BODY) ? self::MIXED_VNO : count($this->_vnoMap);
$this->_vnoMap[$field->vno] = $field->name;
// save field, ensure ID is the first field
if ($field->type == XSFieldMeta::TYPE_ID) {
$this->_fields = array_merge(array($field->name => $field), $this->_fields);
} else {
$this->_fields[$field->name] = $field;
}
}`

添加字段到方案中 每个方案中的特殊类型字段都不能重复出现

checkValid() 方法

public bool checkValid(bool $throw=false)
$throw | bool | 当没有通过检测时是否抛出异常, 默认为 false
{return} | bool | 有效返回 true, 无效则返回 false

源码: sdk/php/lib/XSFieldScheme.class.php#L175 (显示)
`public function checkValid($throw = false)
{
if (!isset($this->_typeMap[XSFieldMeta::TYPE_ID])) {
if ($throw) {
throw new XSException('Missing field of type ID');
}
return false;
}
return true;
}`

判断该字段方案是否有效、可用 每个方案必须并且只能包含一个类型为 ID 的字段

getAllFields() 方法

public XSFieldMeta[] getAllFields()
{return} | XSFieldMeta[] |

源码: sdk/php/lib/XSFieldScheme.class.php#L117 (显示)
`public function getAllFields()
{
return $this->_fields;
}`

获取项目所有字段结构设置

getField() 方法

public XSFieldMeta getField(mixed $name, bool $throw=true)
$name | mixed | 字段名称(string) 或字段序号(vno, int)
$throw | bool | 当字段不存在时是否抛出异常, 默认为 true
{return} | XSFieldMeta | 字段元数据对象, 若不存在则返回 false

源码: sdk/php/lib/XSFieldScheme.class.php#L93 (显示)
`public function getField($name, $throw = true)
{
if (is_int($name)) {
if (!isset($this->_vnoMap[$name])) {
if ($throw === true) {
throw new XSException('Not exists field with vno: `' . $name . '\'');
}
return false;
}
$name = $this->_vnoMap[$name];
}
if (!isset($this->_fields[$name])) {
if ($throw === true) {
throw new XSException('Not exists field with name: `' . $name . '\'');
}
return false;
}
return $this->_fields[$name];
}`

获取项目字段元数据

getFieldBody() 方法

public XSFieldMeta getFieldBody()
{return} | XSFieldMeta | 类型为 BODY 的字段

源码: sdk/php/lib/XSFieldScheme.class.php#L77 (显示)
`public function getFieldBody()
{
if (isset($this->_typeMap[XSFieldMeta::TYPE_BODY])) {
$name = $this->_typeMap[XSFieldMeta::TYPE_BODY];
return $this->_fields[$name];
}
return false;
}`

获取内容字段元数据

getFieldId() 方法

public XSFieldMeta getFieldId()
{return} | XSFieldMeta | 类型为 ID 的字段

源码: sdk/php/lib/XSFieldScheme.class.php#L46 (显示)
`public function getFieldId()
{
if (isset($this->_typeMap[XSFieldMeta::TYPE_ID])) {
$name = $this->_typeMap[XSFieldMeta::TYPE_ID];
return $this->_fields[$name];
}
return false;
}`

获取主键字段元数据

getFieldTitle() 方法

public XSFieldMeta getFieldTitle()
{return} | XSFieldMeta | 类型为 TITLE 的字段

源码: sdk/php/lib/XSFieldScheme.class.php#L59 (显示)
`public function getFieldTitle()
{
if (isset($this->_typeMap[XSFieldMeta::TYPE_TITLE])) {
$name = $this->_typeMap[XSFieldMeta::TYPE_TITLE];
return $this->_fields[$name];
}
foreach ($this->_fields as $name => $field) {
if ($field->type === XSFieldMeta::TYPE_STRING && !$field->isBoolIndex()) {
return $field;
}
}
return false;
}`

获取标题字段元数据

getIterator() 方法

public void getIterator()

源码: sdk/php/lib/XSFieldScheme.class.php#L189 (显示)
`public function getIterator()
{
return new ArrayIterator($this->_fields);
}`

IteratorAggregate 接口, 以支持 foreach 遍历访问所有字段

getVnoMap() 方法

public array getVnoMap()
{return} | array | vno为键, 字段名为值的数组

源码: sdk/php/lib/XSFieldScheme.class.php#L126 (显示)
`public function getVnoMap()
{
return $this->_vnoMap;
}`

获取所有字段的vno与名称映映射关系

logger() 方法

public static XSFieldScheme logger()
{return} | XSFieldScheme | 搜索日志字段方案

源码: sdk/php/lib/XSFieldScheme.class.php#L198 (显示)
`public static function logger()
{
if (self::$_logger === null) {
$scheme = new self;
$scheme->addField('id', array('type' => 'id'));
$scheme->addField('pinyin');
$scheme->addField('partial');
$scheme->addField('total', array('type' => 'numeric', 'index' => 'self'));
$scheme->addField('lastnum', array('type' => 'numeric', 'index' => 'self'));
$scheme->addField('currnum', array('type' => 'numeric', 'index' => 'self'));
$scheme->addField('currtag', array('type' => 'string'));
$scheme->addField('body', array('type' => 'body'));
self::$_logger = $scheme;
}
return self::$_logger;
}`

获取搜索日志的字段方案

Copyright © 2008-2011 by 杭州云圣网络科技有限公司
All Rights Reserved.