PHPackages                             linshunwei/laravel-xunsearch - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. linshunwei/laravel-xunsearch

ActiveLibrary

linshunwei/laravel-xunsearch
============================

中文全文搜索 xunsearch

2.0.1(5y ago)324MITPHPPHP &gt;=7.0CI failing

Since Apr 25Pushed 5y ago1 watchersCompare

[ Source](https://github.com/linshunwei/laravel-xunsearch)[ Packagist](https://packagist.org/packages/linshunwei/laravel-xunsearch)[ RSS](/packages/linshunwei-laravel-xunsearch/feed)WikiDiscussions master Synced 2d ago

READMEChangelogDependencies (4)Versions (7)Used By (0)

Laravel XunSearch
=================

[](#laravel-xunsearch)

介绍
--

[](#介绍)

这个包是在 [laravel/scout](https://github.com/laravel/scout) 的服务中添加拓展，使用 [XunSearch 搜索](https://github.com/hightman/xs-sdk-php) 功能。

XunSearch 的安装，具体查看 [XunSearch 的官方文档](http://www.xunsearch.com)。

laravel/scout 的安装和使用，查看 [laravel/scout 的官方文档](https://laravel.com/docs/master/scout)。

安装
--

[](#安装)

使用 composer

```
composer require linshunwei/xunsearch-laravel
```

在配置文件中添加服务提供者（Laravel5.5 有自动添加）

```
'providers' => [
    //...
    Linshunwei\XunSearchLaravel\XunSearchServiceProvider::class,
    //...
],
```

复制配置文件到配置目录，配置文件内容不多，而且可以在 `.env` 文件中设置。手动复制或者使用命令复制：

```
php artisan vendor:publish --provider="Linshunwei\XunSearchLaravel\XunSearchServiceProvider"
```

修改 scout 配置文件 `config/scout.php`，让 scout 使用 XunSearch 引擎

```
    'driver' => env('SCOUT_DRIVER', 'xunsearch'),
```

或者直接在 `.env` 文件中设置

```
SCOUT_DRIVER=xunsearch

```

修改 XunSearch 配置文件 `config/xunsearch.php`

```
    'server_host' => env('XUNSEARCH_SERVER_HOST', '127.0.0.1'),
    'server_index_port' => env('XUNSEARCH_SERVER_INDEX_PORT', '8383'),
    'server_search_port' => env('XUNSEARCH_SERVER_SEARCH_PORT', '8384'),
    'default_charset' => env('XUNSEARCH_DEFAULT_CHARSET', 'utf-8'),
```

或者直接在 `.env` 文件中设置需要修改的内容，没有特殊情况默认即可

```
XUNSEARCH_SERVER_HOST=127.0.0.1

```

使用
--

[](#使用)

在 `Model` 中使用搜索功能，先引入 `Searchable` Trait，详见 [Scout 使用文档](https://laravel.com/docs/master/scout)。

```
use Illuminate\Database\Eloquent\Model;
use Laravel\Scout\Searchable;

class Article extends Model
{
    use Searchable;
```

要使用 XunSearch， `Model` 还要实现指定接口，同时如果有需要，可以使用 `XunSearchTrait` Trait （Trait 中注册了范围检索方法 `range` 和清空所有数据方法 `cleanSearchable`）。 实现接口需要添加 `xunSearchFieldsType` 方法进行字段类型设置

```
use Illuminate\Database\Eloquent\Model;
use Laravel\Scout\Searchable;
use Linshunwei\XunSearchLaravel\Contracts\XunSearch as XunSearchContract;
use Linshunwei\XunSearchLaravel\XunSearchTrait;

class Article extends Model implements XunSearchContract
{
    use Searchable， XunSearchTrait;

    public function xunSearchFieldsType()
    {
        return [
            'id' => [
                'type'=>self::XUNSEARCH_TYPE_NUMERIC,
            ],
            'title' => [
                'type'=>self::XUNSEARCH_TYPE_TITLE,
            ],
            'body' => [
                'type'=>self::XUNSEARCH_TYPE_BODY,
            ],
            'field' => [
                'tokenizer'=>self::XUNSEARCH_TOKENIZER_XLEN,
                'tokenizer_value'=>2,
            ],
            'created_at' => [
                'type'=>self::XUNSEARCH_TYPE_DATE,
                'index'=>self::XUNSEARCH_INDEX_NONE,
            ],
        ];
    }

```

设置的字段类型的具体效果，查看 [XunSearch 官方文档](http://www.xunsearch.com)。

`Model` 的主键，例如 `id`，已被默认设为引擎的文档主键。 如果需要对 id 进行区间检索，把 id 的类型设为 `self::XUNSEARCH_TYPE_NUMERIC`。如果不需要对 `id` 进行检索，可以不添加 `id` 字段。

字段类型 `self::XUNSEARCH_TYPE_TITLE` 和 `self::XUNSEARCH_TYPE_BODY` 只能分别设置一次。

`XunSearchTrait` 中给 Scout 的 `Builder` 注册了 `range` 方法进行区间检索。除了 `title` 和 `body` 特殊字段， XunSearch 默认设定字段为 `string`，需要进行区间检索的字段，要设为 `numeric` 或者 `date` 才能正常检索。

例如设定 `id` 字段为 `self::XUNSEARCH_TYPE_NUMERIC`，在 `id` 大于 `20` 小于等于 `60` 的范围内搜索 `keyword`

```
Article::search('keyword')->range('id', 20, 60)->get();

```

例如设定 `id` 字段为 `self::XUNSEARCH_TYPE_NUMERIC`，在 `id` 倒序排序搜索 `keyword`

```
Article::search('keyword')->orderBy('id', 'asc')->get();

```

字段的索引 `index` 和分词器 `tokenizer` 的设置效果，在 [XunSearch 官方文档](http://www.xunsearch.com) 查看。

- `XunSearchTrait` 中移除 `cleanSearchable` 方法，请使用 Scout 中的 `removeAllFromSearch` 方法。

相关链接
----

[](#相关链接)

[laravel/scout](https://github.com/laravel/scout)

[laravel/scout 文档](https://laravel.com/docs/master/scout)

[hightman/xs-sdk-php](https://github.com/hightman/xs-sdk-php)

[XunSearch 文档](http://www.xunsearch.com)

###  Health Score

26

—

LowBetter than 43% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity10

Limited adoption so far

Community4

Small or concentrated contributor base

Maturity59

Maturing project, gaining track record

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~121 days

Recently: every ~152 days

Total

6

Last Release

1967d ago

Major Versions

1.1.3 → 2.02020-12-23

### Community

Maintainers

![](https://www.gravatar.com/avatar/3fe2545ef1e7a6237d40d28020530c2f32f22a7f35993bc55e2a1baa2ab983ae?d=identicon)[linshunwei](/maintainers/linshunwei)

---

Tags

laravelxunsearchXunSearch EngineLaravel Scout engine

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/linshunwei-laravel-xunsearch/health.svg)

```
[![Health](https://phpackages.com/badges/linshunwei-laravel-xunsearch/health.svg)](https://phpackages.com/packages/linshunwei-laravel-xunsearch)
```

###  Alternatives

[orchid/platform

Platform for back-office applications, admin panel or CMS your Laravel app.

4.8k2.5M59](/packages/orchid-platform)[jeroen-g/explorer

Next-gen Elasticsearch driver for Laravel Scout.

397612.3k](/packages/jeroen-g-explorer)[zing/laravel-scout-opensearch

Laravel Scout custom engine for OpenSearch

33340.2k](/packages/zing-laravel-scout-opensearch)[romanstruk/manticore-scout-engine

Laravel Manticore Scout Engine

4818.1k](/packages/romanstruk-manticore-scout-engine)[mozex/laravel-scout-bulk-actions

A Laravel Scout extension for bulk importing and flushing of all models.

1033.4k](/packages/mozex-laravel-scout-bulk-actions)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
