全局搜索
全局搜索功能提供了一个统一的搜索界面,可以快速查找整个 OmniCRM 数据库中的客户、联系人、服务、库存和站点。
另见:Customers <basics_customers>,Inventory <administration_inventory>,Service Management <csa_service_management>。
访问全局搜索
从 CRM 的任何地方:
点击顶部导航栏中的搜索图标或导航到:
全局搜索页面将显示一个大型搜索框和过滤选项。
工作原理
全局搜索在五种数据类型之间执行跨实体搜索:
搜索内容:
- 客户 - 客户名称
- 联系人 - 名字、姓氏、电子邮件地址、电话号码
- 站点 - 站点名称
- 库存 - 序列号、ICCID、标识符(itemtext1、itemtext2)
- 服务 - 服务名称、服务 UUID
搜索行为:
- 部分匹配 - 搜索包含您的查询的术语(例如,“Smith”匹配“John Smith”和“Smithson”)
- 不区分大小写 - “john”匹配“John”、“JOHN”和“john”
- 多个实体 - 单次搜索返回所有实体类型的结果
- 分页结果 - 默认每页显示 10 个结果
执行搜索
基本搜索
- 在搜索框中输入您的搜索词
- 点击**“搜索”**或按回车

示例搜索词:
- 客户名称:
"Acme Corp" - 电话号码:
"+1234567890"或"1234567890" - 电子邮件:
"john@example.com"或"john" - 序列号:
"ICCID8944"或仅"8944" - 服务 UUID:
"123e4567-e89b"
包括已关闭账户
默认情况下,搜索仅返回开放客户账户的结果。
要搜索包括已关闭账户在内的所有账户:
- 勾选**“包括已关闭账户”**复选框
- 再次点击**“搜索”**
这将搜索:
- 状态为
customer_status = "Closed"的客户 - 与已关闭客户关联的联系人、服务、站点和库存
已关闭账户搜索的用例:
- 查找历史客户记录
- 定位已停用服务的设备
- 查找旧电话号码或服务
- 恢复客户数据以便重新激活
理解搜索结果
结果显示格式
结果以可滚动列表显示:
John Smith 客户 ID: 123 类型: customer
John Smith (联系人) 客户 ID: 123 类型: contact
Mobile - +44 7700 900123 客户 ID: 123 类型: service
每个结果显示:
- 名���/标题 - 主要标识符(可点击链接)
- 客户 ID - 该记录所属的父客户
- 类型 - 实体类型(客户、联系人、站点、库存、服务)
结果类型解释
客户结果:
点击打开客户概览页面,显示所有详细信息、服务、联系人等。
联系人结果:
点击打开客户页面,联系人标签处于活动状态,滚动到特定联系人。
站点结果:
点击打开客户页面,站点标签处于活动状态。
库存结果:
点击打开客户页面,库存标签处于活动状态。如果库存未分配(没有 customer_id),则链接到主库存列表。
服务结果:
点击打开客户页面,服务标签处于活动状态,突出显示特定服务。
从结果导航
所有搜索结果都是可点击链接,直接导航到相关页面:
链接模式:
/customers/{customer_id}- 客户记录/customers/{customer_id}#4- 联系人(标签 4)/customers/{customer_id}#2- 站点(标签 2)/customers/{customer_id}#8- 库存(标签 8)/customers/{customer_id}#3- 服务(标签 3)/inventory-items-list- 未分配库存
哈希(#)片段在客户页面加载时自动选择正确的标签。
分页
结果按每页 10 项进行分页:
显示结果 11-20,共 47 项
使用以下方式浏览页面:
- 上一页/下一页按钮
- 页码 - 点击特定页面
- 键盘 - 左/右箭头(如果已实现)
常见搜索场景
场景 1:通过电话查找客户
用户来电,提供电话号码。
结果:• John Smith (联系人) - 客户 ID: 123 • Mobile - 555-0123 (服务) - 客户 ID: 123
点击任一结果以访问客户账户。
场景 2:定位 SIM 卡
技术人员需要找出哪个客户拥有特定的 SIM。
结果:• 8944538000000001234 (库存) - 客户 ID: 456
点击结果以查看 SIM 分配、客户详细信息。
场景 3:查找不活跃客户
需要定位一个 6 个月前关闭账户的客户。
☑ 包括已关闭账户
结果:• Acme Corporation (客户) - 客户 ID: 789
场景 4:通过电子邮件搜索
客户发送电子邮件给支持,工作人员需要查找他们的账户。
结果:• John Smith (联系人) - 客户 ID: 123
场景 5:通过 UUID 查找服务
配置日志显示服务 UUID,需要找出哪个客户。
结果:• Mobile - +44 7700 900123 (服务) - 客户 ID: 456
搜索提示
获得最佳结果:
- 使用部分术语 - “Smith”比“John Smith”更好,以获得更广泛的���果
- 尝试变体 - 如果“John”无效,尝试电话或电子邮件
- 包括已关闭账户 - 在搜索历史数据时
- 对设备要具体 - 使用完整的序列号进行库存搜索
- 搜索服务 UUID - 当其他标识符未知时
按实体搜索的内容:
客户:
- 仅客户名称(不包括地址、备注或其他字段)
联系人:
- 名字
- 姓氏
- 电子邮件地址
- 电话号码
站点:
- 仅站点名称
库存:
- itemtext1(通常是 ICCID、序列号、MAC 地址)
- itemtext2(通常是 IMSI、次要标识符)
- 注意:不搜索 itemtext3-20 或库存备注
服务:
- 服务名称
- 服务 UUID
不被搜索的内容:
- 客户地址
- 客户备注
- 交易描述
- 发票详细信息
- 配置日志
- 活动日志条目
- 库存备注(超出 itemtext1/2)
API 参考
全局搜索端点
GET /utilities/search_everything?search=Smith&page=1&per_page=10&search_closed_records=false
Authorization: Bearer <token>
查询参数:
search(必需) - 搜索词page(可选) - 页码(默认:1)per_page(可选) - 每页结果数(默认:10)search_closed_records(可选) - 包括已关闭账户(默认:false)
响应:
{
"data": [
{
"id": 123,
"name": "John Smith",
"customer_id": 123,
"type": "customer"
},
{
"id": 456,
"name": "John Smith",
"customer_id": 123,
"type": "contact"
},
{
"id": 789,
"name": "Mobile - +44 7700 900123",
"customer_id": 123,
"type": "service"
}
],
"pagination": {
"current_page": 1,
"per_page": 10,
"total_pages": 5,
"total_items": 47
}
}
搜索逻辑(后端):
后端在所有实体表之间执行 SQL UNION:
-- Customers
SELECT customer_id AS id,
customer_name AS name,
customer_id,
'customer' AS type
FROM customer
WHERE customer_name LIKE '%Smith%'
AND customer_status = 'Open'
UNION ALL
-- Contacts
SELECT contact_id AS id,
CONCAT(contact_firstname, ' ', contact_lastname) AS name,
customer_id,
'contact' AS type
FROM customer_contact
WHERE (contact_firstname LIKE '%Smith%' OR
contact_lastname LIKE '%Smith%' OR
contact_email LIKE '%Smith%' OR
contact_phone LIKE '%Smith%')
UNION ALL
-- Sites
SELECT site_id AS id,
site_name AS name,
customer_id,
'site' AS type
FROM customer_site
WHERE site_name LIKE '%Smith%'
UNION ALL
-- Inventory
SELECT inventory_id AS id,
itemtext1 AS name,
customer_id,
'inventory' AS type
FROM inventory
WHERE itemtext1 LIKE '%Smith%' OR
itemtext2 LIKE '%Smith%'
UNION ALL
-- Services
SELECT service_id AS id,
service_name AS name,
customer_id,
'service' AS type
FROM customer_service
WHERE service_name LIKE '%Smith%' OR
service_uuid LIKE '%Smith%'
结果随后被分页并返回。
性能考虑
搜索性能:
- 搜索使用带通配符的 LIKE 查询(
%term%) - 当前未实现全文索引
- 大型数据库(>100k 客户)可能会遇到搜索速度变慢
- 每页结果限制为 10 个以提高性能
优化提示:
- 使用具体的搜索词以减少结果集
- 使用已关闭账户过滤器以减少搜索范围
- 考虑在经常搜索的字段上添加数据库索引
故障排除
未找到结果(但记录存在)
- 原因: 搜索词与存储的数据格式不匹配
- 示例:
- 电话存储为“+44 7700 900123”,搜索“07700900123”将不匹配
- 电子邮件存储为“<john.smith@example.com>”,搜索“john”将不匹配
- 解决方法: 尝试变体,使用肯定存在的部分匹配
搜索太慢
- 原因: 大型数据库,跨多个表的复杂查询
- 解决方法:
- 使用更具体的搜索词
- 限制为仅开放账户(取消勾选已关闭账户)
- 联系管理员以获取数据库索引
结果链接到错误的客户
- 原因: 多个客户/联系人具有相同名称
- 解决方法: 使用客户 ID 进行区分,或通过唯一标识符(电子邮件、电话)进行搜索
已关闭账户未出现
- 原因: 未勾选“包括已关闭账户”复选框
- 解决方法: 勾选该框并重新搜索
相关文档
basics_customers- 客户管理basics_navigation- 一般导航administration_inventory- 库存搜索