[Xunsearch PHP-SDK](http://www.xunsearch.com) v1.4.8 权威指南
1. [适用情况](#)
1. [用法详细示范](#)
# 按字段值分面搜索
分面搜索在英文中通常表述为 `Facets Search`,被检索的数据通具有多维度属性。例如一本书包含主题、作者、年代等,而分面搜索是指通过事物的这些属性不断筛选、过滤搜索结果的方法,可以将分面搜索看成搜索和浏览的结合。
如果您还是不清楚它的概念,敬请参阅[这篇文章](http://cdc.tencent.com/?p=1401)。
### 1. 适用情况[?]()
在 `xunsearch` 中,分面搜索是按照字段的值来实现的,为了结合条件做筛选搜索,支持分面的字段需要进行索引,而它的分词方式最好必须是 `full` 即整值索引。
### 2. 用法详细示范[?]()
以论坛文章搜索为例,每篇文章均属于不同版块(字段为 fid)、不同的发表年份(字段为 year),我们需要在搜索结果中按年份、版块显示匹配的文章数。
那么在构建搜索语句时使用 [XSSearch::setFacets](#) 方法来指定需要分面的字段,该方法接受两个参数,第一参数为要分面的字段名称(多个字段请用数组作参数),第二参数是可选的布尔类型,true 表示需要准确统计,默认 false 则为估算。
执行搜索之后再调用 [XSSearch::getFacets](#) 方法可取回分面搜索结果。
~~~
// 在搜索时加入分面设置
$docs = $search->setQuery('关键词')->setFacets(array('fid', 'year'))->search();
// 读取分面结果
$fid_counts = $search->getFacets('fid'); // 返回数组,以 fid 为键,匹配数量为值
$year_counts = $search->getFacets('year'); // 返回数组,以 year 为键,匹配数量为值
// 遍历 $fid_counts, $year_counts 变量即可得到各自筛选条件下的匹配数量
foreach ($fid_counts as $fid => $count)
{
echo "其中版块ID为 $fid 的匹配数为: $count\n";
}
// ...
// 通常可以循环生成新的搜索链接,在搜索链接中加入字段搜索条件即可
// ...
// 然后像往常一样使用 $docs 显示文档
~~~
> **Tip:** 出于性能考虑,分面搜索返回的匹配数量默认是估算的,比实际数量可能会偏小。 如果您确实需要得到精确数字,请将 [XSSearch::setFacets](#) 的第二参数设为 true 。
> 此外,分面搜索仅针对字段值较短的情况,当字段值的长度超过 **255** 字节时会被忽略而不参与统计。
> 每次搜索最多同时支持 **8** 个字段进行分面搜索,分面字段必须是“字符串”类型。
$Id$
[« 搜索建议和纠错](#)
[RequiredCheck 运行检测 »](#)
Copyright © 2008-2011 by [杭州云圣网络科技有限公司](http://www.xunsearch.com)
All Rights Reserved.
![](https://box.kancloud.cn/2015-09-10_55f11d050dd5a.gif)
![](https://box.kancloud.cn/2015-09-10_55f11d05189f0.gif)
![](https://box.kancloud.cn/2015-09-10_55f11d05213c8.gif)
- 权威指南
- 新手上路
- 最新主要变动
- 概述
- 关于 Xunsearch PHP-SDK
- 安装、升级
- 体验 demo 项目
- 开发规范
- 开发流程
- 了解基础对象
- 基础对象概述
- XS 项目
- XSException 异常
- XSDocument 文档
- XSIndex 索引管理
- XSSearch 搜索
- XSTokenizer 分词接口
- 编写项目配置文件
- 项目配置详解
- 自定义分词器
- 编写第一个配置文件
- 管理索引
- 索引概述
- 添加文档
- 更新、修改文档
- 删除文档
- 清空索引
- 平滑重建索引
- 使用索引缓冲区
- 自定义SCWS词库
- 使用搜索
- 搜索概述
- 构建搜索语句
- 获取搜索匹配结果
- 获取搜索匹配数量
- 获取热门搜索词
- 获取相关搜索词
- 搜索建议和纠错
- 按字段值分面搜索
- 使用辅助工具
- RequiredCheck 运行检测
- Indexer 索引管理器
- Quest 搜索测试工具
- SearchSkel 生成搜索代码
- IniWizzard 配置文件向导
- Logger 搜索日志管理
- 专题
- 同义词搜索功能
- 在SDK中使用SCWS分词
- API 指南
- XS
- XS
- XSCommand
- XSComponent
- XSDocument
- XSErrorException
- XSException
- XSFieldMeta
- XSFieldScheme
- XSIndex
- XSSearch
- XSServer
- XS.tokenizer
- XSTokenizer
- XSTokenizerFull
- XSTokenizerNone
- XSTokenizerScws
- XSTokenizerSplit
- XSTokenizerXlen
- XSTokenizerXstep
- XS.util
- XSCsvDataSource
- XSDataFilter
- XSDatabaseDataSource
- XSDebugFilter
- XSJsonDataSource
- XSUtil
- XS.util.db
- XSDatabase
- XSDatabaseMySQL
- XSDatabaseMySQLI
- XSDatabasePDO
- XSDatabasePDO_MySQL
- XSDatabasePDO_PgSQL
- XSDatabasePDO_SQLite
- XSDatabasePgSQL
- XSDatabaseSQLite
- XSDatabaseSQLite3
- XS.utilf
- XSDataSource
- 其它文档
- 关于 xunsearch
- 特色和优势
- Xunsearch 架构简图
- 下载 Xunsearch
- 商业服务与支持
- XunSearch 授权许可证