mxusearch
1.0.0
全文檢索服務是基於開源項目
xunsearch封裝的全文搜索引擎,服務仍在完善。
1.通過composer安裝搜索服務, 輸入如下命令安裝最新版本.
composer require antsfree/mxusearch dev-master
OR
composer require antsfree/mxusearch '^0.1'
2.在config/app.php 的服務數組providers 中添加以下服務.
AntsfreeMxusearchMxusearchProvider::class
3.在config/app.php 的門面數組aliases 中添加以下門面.
'Mxusearch' => AntsfreeMxusearchMxusearch::class,
4.執行如下命令, 配置mxusearch.php配置文件;
php artisan vendor:publish --provider="AntsfreeMxusearchMxusearchProvider"
5.分佈式安裝,各自laravel項目需要配置以下env參數:
| env配置 | 中文釋義 | 預設值 |
|---|---|---|
| MXUSEARCH_PROJECT | 索引庫名 | mxu_project |
| MXUSEARCH_CHARSET | 字符編碼 | utf-8 |
| MXUSEARCH_INDEX_HOST | 索引服務器IP | 127.0.0.1(分佈式部署配置詳見“注意”) |
| MXUSEARCH_INDEX_PORT | 索引端口 | 8383 |
| MXUSEARCH_SEARCH_HOST | 搜索服務器IP | 127.0.0.1(分佈式部署配置詳見“注意”) |
| MXUSEARCH_SEARCH_PORT | 搜索端口 | 8384 |
| MXUSEARCH_INI | INI配置文件名 | mxusearch.ini |
注意:以上配置全都有默認值,其中索引、搜索的host在分佈式部署上需要注意區分。統一指向訊搜服務所在服務器。
6.執行console命令,生成ini文件
php artisan search:reset-ini
| 序號 | 方法名稱 | 中文釋義 | 備註 |
|---|---|---|---|
| 1 | addIndex | 創建索引 | 單條支持即時同步,多條存在時間誤差,具體在2~3分鐘,視具體情況 |
| 2 | deleteIndex | 刪除索引 | 單條多條立即生效,無延遲 |
| 4 | searchIndex | 查找索引 | 支持setFuzzy模糊查詢,支持特定字段定向查詢(column:key) |
| 5 | cleanIndex | 清空索引 | 立即生效,無延遲 |
| 6 | rebuildIndex | 重建索引 | 暫不支持 |
| 7 | getIndexCount | 獲取索引總數 | |
| 8 | checkServer | 檢測全文檢索服務狀態 | 直接輸出當前狀態及索引條數 |
| 9 | flushIndex | 強制刷新搜索日誌 | |
| 10 | getHotWords | 獲取熱門搜索詞 | |
| 11 | getMatchNum | 獲取索引匹配數量 | |
| 12 | flushIndex | 強制刷新索引 | 強制刷新實現索引的即加即搜 |
| 13 | flushLogging | 強制刷新搜索日誌 | |
| 14 | checkServer | 訊搜服務狀態檢測 | |
| 15 | getKeyWords | 文本分詞功能 | |
| 16 | resetIniFile | 重置INI文件方法 | |
| 17 | multiSearch | 多條件查詢 |
提供artisan 的命令實現:
| 序號 | artisan命令 | console釋義 | 備註 |
|---|---|---|---|
| 1 | search:add | 創建索引 | 單條支持即時同步,多條存在時間誤差,具體在2~3分鐘,視具體情況 |
| 2 | search:delete | 刪除索引 | 單條多條立即生效,無延遲 |
| 3 | search:search | 查找索引 | 終端交互,可選擇匹配範圍 |
| 4 | search:clear | 清空索引 | 立即生效,無延遲 |
| 5 | search:check-server | 檢測全文檢索服務狀態 | 直接輸出當前狀態及索引條數 |
| 6 | search:flush | 強制刷新索引及搜索日誌 | 默認為異步創建索引,強制刷新實現索引的即加即搜 |
| 7 | search:scws | 文本分詞命令 | |
| 8 | search:reset-ini | 重置ini文件 | 根據配置項重新配置INI文件 |
| 9 | search:list-hotwords | 查看熱詞列表 | 命令行直接輸出 |
1、 ini配置文件: mxu-backend/config/mxusearch.ini ;
2、 服務器配置
project.name = {{MXUSEARCH_PROJECT}}// 项目名称
project.default_charset = {{MXUSEARCH_CHARSET}}// 字符编码
server.index = {{MXUSEARCH_INDEX_HOST}}:{{MXUSEARCH_INDEX_PORT}}// 索引服务端配置(Host&端口)
server.search = {{MXUSEARCH_SEARCH_HOST}}:{{MXUSEARCH_SEARCH_PORT}}// 搜索服务端配置(Host&端口)
3、索引字段配置
[id]
type = id
tokenizer = full
[column_id]
tokenizer = full
index = self
......
......
方法示例
/**
* 多条件查询功能
*
* @param $keyword
* @param string $field
* @param array $other_field_value
* @param array $range
* @param int $limit
* @param int $page
* @param array $sorts
*
* @return array
*/
public function multiSearch($keyword, $field = '', array $other_field_value = [], array $range = [], $limit = 0, $page = 1, array $sorts = []);
請求參數
| 參數名 | 類型 | 參數說明 | 必填 | 備註 |
|---|---|---|---|---|
| $keyword | string | 關鍵詞 | N | |
| $field | string | 字段名 | N | 默認null,表示全文匹配 |
| $other_field_value | array | 其他多條件參數 | N | 默認空數組 |
| $range | array | 區間條件篩選 | N | |
| $limit | int | 分頁參數 | N | 默認10條 |
| $page | int | 分頁參數 | N | 默認1 |
| $sorts | array | 排序條件 | N | 默認空 |
請求示例
$key = '我是关键词';
$field = 'title';
// 多条件
$other_field_value = [
'site_id' => 1,
'column_id' => 2,
'type' => 'article',
// ...
];
$range = [
[
'field' => 'publish_time',
'from' => '2017-10-18 12:07:26',
'to' => '2017-10-23 17:07:26',
],
// ...
];
// 分页控制
$limit = 10;
$page = 1;
// 排序条件(true 为正序, false 为倒序)
$sorts = [
'field_1' => true, // 根据 field_1 正序排序
'field_2' => false // 根据 field_2 倒序排序
];
// 调用服务
Mxusearch::multiSearch($key, $field, $other_field, $range, $limit, $page, $sorts);
2~4分钟能實現索引的更新;2~4分钟能實現索引的創建;laravel config目錄中;訊搜SDK 指南