>백엔드 개발 >PHP 튜토리얼 >Laravel xunsearch 전체 텍스트 검색

Laravel xunsearch 전체 텍스트 검색

高洛峰
高洛峰원래의
2017-02-09 09:55:202798검색

시작하기 전에 xunsearch 공식 문서를 찾아보는 것이 좋습니다

Xunsearch 소개

Xunsearch는 모든 기능을 갖춘 고성능 전체 텍스트 검색 솔루션입니다. .
Xunsearch는 일반 개발자가 기존의 대용량 데이터에 대한 자체 전문 검색 엔진을 빠르고 쉽게 구축할 수 있도록 설계되었습니다.

자세한 내용을 보려면 여기를 클릭하세요

테스트 환경:

Linux 서버 2:

代号 功能 IP 系统
服务器A 提供web服务 192.168.56.2 centos7
服务器B 提供 xunsearch 后端服务 192.168.56.3 centos7

xunsearch 백엔드 서버 구성:

PHP 버전 7.0.13에는 캐시가 설치되어 있지 않습니다.

PHP 7.0.13 (cli) (built: Dec 21 2016 13:53:31) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
    with Xdebug v2.5.0, Copyright (c) 2002-2016, by Derick Rethans

서버 B에 연결하고 다음 지침을 실행하여 xunsearch 설치 패키지를 압축 해제합니다.

wget http://www.php.cn/
tar -xjf xunsearch-full-latest.tar.bz2

설치 스크립트를 실행하고 프롬프트를 따르십시오. 작동하려면 주로 xunsearch 소프트웨어 패키지의 설치 디렉토리를 입력해야 합니다. 다른 소프트웨어 디렉토리에 혼합하는 대신 별도의 디렉토리를 계획하는 것이 좋습니다.

cd xunsearch-full-1.4.10/
sh setup.sh

설치 대화형 인터페이스가 표시됩니다. 그런 다음 Enter를 눌러 기본 경로에 설치하세요.
그런 다음 커피를 마시고 잠시 기다리면 다음과 같은 설치 성공 메시지가 나타납니다.

+==========================================+
| Welcome to setup xunsearch(full)         |
| 欢迎使用 xunsearch (完整版) 安装程序       |
+------------------------------------------+
| Follow the on-screen instructions please |
| 请按照屏幕上的提示操作以完成安装            |
+==========================================+

Please specify the installation directory
请指定安装目录 (默认为中括号内的值)
[/usr/local/xunsearch]:

Confirm the installation directory
请确认安装目录:/usr/local/xunsearch [Y/n]Y
Checking scws ... no
Installing scws (1.2.3) ... 
Extracting scws package ...
Configuring scws ...
Compiling & installing scws ...
Checking scws dict ... no
Extracting scws dict file ... 
Checking libuuid ... no, try to install it
Extracting libuuid package ...
Configuring libuuid ...
Compiling & installing libuuid ...
Checking xapian-core-scws ... no
Installing xapian-core-scws (1.2.22) ... 
Extracting xapian-core-scws package ...
Configuring xapian-core-scws ...
Compiling & installing xapian-core-scws ...
Checking libevent ... no
Installing libevent (2.0.21-stable) ... 
Extracting libevent package ...
Configuring libevent ...
Compiling & installing libevent ...
Extracting xunsearch package (1.4.10) ...
Configuring xunsearch ...
Compiling & installing xunsearch ...
Cleaning ... done

+=================================================+
| Installation completed successfully, Thanks you |
| 安装成功,感谢选择和使用 xunsearch                |
+-------------------------------------------------+
| 说明和注意事项:                                  |
| 1. 开启/重新开启 xunsearch 服务程序,命令如下:    |
|    /usr/local/xunsearch/bin/xs-ctl.sh restart   |
|    强烈建议将此命令写入服务器开机脚本中             |
|                                                 |
| 2. 所有的索引数据将被保存在下面这个目录中:         |
|    /usr/local/xunsearch/data                    |
|    如需要转移到其它目录,请使用软链接。             |
|                                                 |
| 3. 您现在就可以在我们提供的开发包(SDK)基础上       |
|    开发您自己的搜索了。                           |
|    目前只支持 PHP 语言,参见下面文档:             |
|    /usr/local/xunsearch/sdk/php/README          |
+=================================================+

注意: 如果是生产环境iptables可能需要配置得严格,本文仅为测试

iptables를 구성합니다. 활성화하지 않은 경우 이 작업을 무시하세요.

vi /etc/sysconfig/iptables

加入, 下面两行

-A INPUT -p tcp -m state --state NEW -m tcp --dport 8383 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8384 -j ACCEPT

重启iptables
service iptables restart

서비스 시작

/usr/local/xunsearch/bin/xs-ctl.sh -b inet start

시작 출력 내용:

INFO: starting server[xs-indexd] ... (BIND:8383)
INFO: starting server[xs-searchd] ... (BIND:8384)

웹 서버 구성

xunsearch PHP SDK 설치

cd project/root/path
composer require --prefer-dist hightman/xunsearch

프로젝트 구성 파일을 만듭니다. 하나의 프로젝트는 구성 파일에 해당하며 프로젝트 이름은 반복할 수 없습니다.

cp app\vendor\hightman\xunsearch\app\demo.ini app\config\search-demo.ini

방금 생성된 파일 내용을 수정합니다. 여기서 server.index 및 server.search의 IP 주소는 xunsearch 서비스가 설치된 서버의 IP 주소입니다.

;搜索配置文件示例
project.name = demo
project.default_charset = utf-8
server.index = 192.168.56.4:8383
server.search = 192.168.56.4:8384

[pid]
type = id

[subject]
type = title

[message]
type = body

[chrono]
type = numeric

app/routes/를 수정합니다. web.php 파일을 작성하고 일부 클라이언트 검색 테스트 코드를 작성합니다.

###################### 测试模块 ####################
/*
 * 全文搜索测试部分
 */
Route::get('/search/{key}', function ($key){
    $xs = new XS(config_path('search-demo.ini'));
    $search = $xs->search; // 获取 搜索对象
    $query = $key;
    $search->setQuery($query)
        ->setSort('chrono', true) //按照chrono 正序排列
        ->setLimit(20,0) // 设置搜索语句, 分页, 偏移量
    ;

    $docs = $search->search(); // 执行搜索,将搜索结果文档保存在 $docs 数组中
    $count = $search->count(); // 获取搜索结果的匹配总数估算值
    foreach ($docs as $doc){
        $subject = $search->highlight($doc->subject); // 高亮处理 subject 字段
        $message = $search->highlight($doc->message); // 高亮处理 message 字段
        echo $doc->rank() . '. ' . $subject . " [" . $doc->percent() . "%] - ";
        echo date("Y-m-d", $doc->chrono) . "<br>" . $message . "<br>";
        echo '<br>========<br>';
    }
    echo  '总数:'. $count;
});

Route::get('/makedoc/{title}/{message}', function ($title, $message){
    $xs = new XS('demo');
    $doc = new XSDocument;
    $doc->setFields([
        'pid' => 1,
        'subject' => $title,
        'message' => $message,
        'chrono' => time(),
    ]); // 用数组进行批量赋值
    $xs->index->add($doc);
});

브라우저를 사용하여 위의 두 경로에 액세스하여 기능을 테스트합니다.

다음에 액세스하여 생성된 인덱스를 테스트합니다. http:/ /도메인 이름/makedoc/제목/콘텐츠

테스트 예:

http://你的域名/makedoc/关于 xunsearch 的 DEMO 项目测试/项目测试是一个很有意思的行为!

http://你的域名/makedoc/测试第二篇/这里是第二篇文章的内容

http://你的域名/makedoc/项目测试第三篇/俗话说,无三不成礼,所以就有了第三篇

注意: 索引不是即时生效的 延迟大概在10秒左右

다음에 액세스하여 검색 기능을 테스트하세요. http: //도메인 이름/검색/키워드
예: 검색 키워드项目

1. 关于 xunsearch 的 DEMO 项目测试 [99%] - 2011-08-26
项目测试是一个很有意思的行为!

========
2. 项目测试第三篇 [100%] - 2011-08-26
俗话说,无三不成礼,所以就有了第三篇

========
总数:2

위 단계를 통해 가장 간단한 전체 텍스트 검색 예가 완성되었습니다.
만약 자세한 내용을 알고 싶으시면 xunsearch 공식 문서를 읽어보세요.

참고 내용

  1. xunsearch 공식 문서


공식 문서를 시작하기 전에 xunsearch를 찾아보는 것이 좋습니다

Xunsearch 소개

Xunsearch는 모든 기능을 갖춘 고성능 전체 텍스트입니다. 검색 솔루션.
Xunsearch는 일반 개발자가 기존의 대용량 데이터에 대한 자체 전문 검색 엔진을 빠르고 쉽게 구축할 수 있도록 설계되었습니다.

자세한 내용을 보려면 여기를 클릭하세요

테스트 환경:

Linux 서버 2:

代号 功能 IP 系统
服务器A 提供web服务 192.168.56.2 centos7
服务器B 提供 xunsearch 后端服务 192.168.56.3 centos7

xunsearch 백엔드 서버 구성:

PHP 버전 7.0.13에는 캐시가 설치되어 있지 않습니다. 프로덕션 환경에 캐시를 설치하는 것이 좋습니다

PHP 7.0.13 (cli) (built: Dec 21 2016 13:53:31) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
    with Xdebug v2.5.0, Copyright (c) 2002-2016, by Derick Rethans

서버 B에 연결합니다. 다음 지침을 실행하여 xunsearch 설치 패키지

wget http://www.php.cn/
tar -xjf xunsearch-full-latest.tar.bz2

설치 스크립트를 실행하고 프롬프트를 따르십시오. 주로 xunsearch 소프트웨어 패키지의 설치 디렉터리를 입력하는 것이 좋습니다. 대신 별도의 디렉터리를 계획하는 것이 좋습니다. 다른 소프트웨어 디렉토리에 혼합하는 것입니다.

cd xunsearch-full-1.4.10/
sh setup.sh

설치 대화형 인터페이스가 표시됩니다. 그런 다음 Enter를 눌러 기본 경로에 설치하세요.
그런 다음 커피를 마시고 잠시 기다리면 다음과 같은 설치 성공 메시지가 나타납니다.

+==========================================+
| Welcome to setup xunsearch(full)         |
| 欢迎使用 xunsearch (完整版) 安装程序       |
+------------------------------------------+
| Follow the on-screen instructions please |
| 请按照屏幕上的提示操作以完成安装            |
+==========================================+

Please specify the installation directory
请指定安装目录 (默认为中括号内的值)
[/usr/local/xunsearch]:

Confirm the installation directory
请确认安装目录:/usr/local/xunsearch [Y/n]Y
Checking scws ... no
Installing scws (1.2.3) ... 
Extracting scws package ...
Configuring scws ...
Compiling & installing scws ...
Checking scws dict ... no
Extracting scws dict file ... 
Checking libuuid ... no, try to install it
Extracting libuuid package ...
Configuring libuuid ...
Compiling & installing libuuid ...
Checking xapian-core-scws ... no
Installing xapian-core-scws (1.2.22) ... 
Extracting xapian-core-scws package ...
Configuring xapian-core-scws ...
Compiling & installing xapian-core-scws ...
Checking libevent ... no
Installing libevent (2.0.21-stable) ... 
Extracting libevent package ...
Configuring libevent ...
Compiling & installing libevent ...
Extracting xunsearch package (1.4.10) ...
Configuring xunsearch ...
Compiling & installing xunsearch ...
Cleaning ... done

+=================================================+
| Installation completed successfully, Thanks you |
| 安装成功,感谢选择和使用 xunsearch                |
+-------------------------------------------------+
| 说明和注意事项:                                  |
| 1. 开启/重新开启 xunsearch 服务程序,命令如下:    |
|    /usr/local/xunsearch/bin/xs-ctl.sh restart   |
|    强烈建议将此命令写入服务器开机脚本中             |
|                                                 |
| 2. 所有的索引数据将被保存在下面这个目录中:         |
|    /usr/local/xunsearch/data                    |
|    如需要转移到其它目录,请使用软链接。             |
|                                                 |
| 3. 您现在就可以在我们提供的开发包(SDK)基础上       |
|    开发您自己的搜索了。                           |
|    目前只支持 PHP 语言,参见下面文档:             |
|    /usr/local/xunsearch/sdk/php/README          |
+=================================================+

注意: 如果是生产环境iptables可能需要配置得严格,本文仅为测试

iptables를 구성합니다. 활성화하지 않은 경우 이 작업을 무시하세요

vi /etc/sysconfig/iptables

加入, 下面两行

-A INPUT -p tcp -m state --state NEW -m tcp --dport 8383 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8384 -j ACCEPT

重启iptables
service iptables restart

서비스 시작

/usr/local/xunsearch/bin/xs-ctl.sh -b inet start

시작 출력 내용:

INFO: starting server[xs-indexd] ... (BIND:8383)
INFO: starting server[xs-searchd] ... (BIND:8384)

웹 서버 구성

xunsearch PHP SDK 설치

cd project/root/path
composer require --prefer-dist hightman/xunsearch

프로젝트 구성 파일을 만듭니다. 하나의 프로젝트는 구성 파일에 해당하며 프로젝트 이름은 반복할 수 없습니다.

cp app\vendor\hightman\xunsearch\app\demo.ini app\config\search-demo.ini

방금 생성된 파일 내용을 수정합니다. 여기서 server.index 및 server.search의 IP 주소는 xunsearch 서비스가 설치된 서버의 IP 주소입니다.

;搜索配置文件示例
project.name = demo
project.default_charset = utf-8
server.index = 192.168.56.4:8383
server.search = 192.168.56.4:8384

[pid]
type = id

[subject]
type = title

[message]
type = body

[chrono]
type = numeric

app/routes/를 수정합니다. web.php 파일을 작성하고 일부 클라이언트 검색 테스트 코드를 작성합니다.

###################### 测试模块 ####################
/*
 * 全文搜索测试部分
 */
Route::get('/search/{key}', function ($key){
    $xs = new XS(config_path('search-demo.ini'));
    $search = $xs->search; // 获取 搜索对象
    $query = $key;
    $search->setQuery($query)
        ->setSort('chrono', true) //按照chrono 正序排列
        ->setLimit(20,0) // 设置搜索语句, 分页, 偏移量
    ;

    $docs = $search->search(); // 执行搜索,将搜索结果文档保存在 $docs 数组中
    $count = $search->count(); // 获取搜索结果的匹配总数估算值
    foreach ($docs as $doc){
        $subject = $search->highlight($doc->subject); // 高亮处理 subject 字段
        $message = $search->highlight($doc->message); // 高亮处理 message 字段
        echo $doc->rank() . '. ' . $subject . " [" . $doc->percent() . "%] - ";
        echo date("Y-m-d", $doc->chrono) . "<br>" . $message . "<br>";
        echo '<br>========<br>';
    }
    echo  '总数:'. $count;
});

Route::get('/makedoc/{title}/{message}', function ($title, $message){
    $xs = new XS('demo');
    $doc = new XSDocument;
    $doc->setFields([
        'pid' => 1,
        'subject' => $title,
        'message' => $message,
        'chrono' => time(),
    ]); // 用数组进行批量赋值
    $xs->index->add($doc);
});

브라우저를 사용하여 위의 두 경로에 액세스하여 기능을 테스트합니다.

다음에 액세스하여 생성된 인덱스를 테스트합니다. http:/ /도메인 이름/makedoc/제목/콘텐츠

테스트 예:

http://你的域名/makedoc/关于 xunsearch 的 DEMO 项目测试/项目测试是一个很有意思的行为!

http://你的域名/makedoc/测试第二篇/这里是第二篇文章的内容

http://你的域名/makedoc/项目测试第三篇/俗话说,无三不成礼,所以就有了第三篇

注意: 索引不是即时生效的 延迟大概在10秒左右

다음에 액세스하여 검색 기능을 테스트하세요. http: //도메인 이름/검색/키워드
예: 검색 키워드项目

1. 关于 xunsearch 的 DEMO 项目测试 [99%] - 2011-08-26
项目测试是一个很有意思的行为!

========
2. 项目测试第三篇 [100%] - 2011-08-26
俗话说,无三不成礼,所以就有了第三篇

========
总数:2

위 단계를 통해 가장 간단한 전체 텍스트 검색 예가 완성되었습니다.
만약 더 자세한 내용을 알고 싶으시면 xunsearch 공식 문서를 읽어보세요.

Laravel xunsearch 전체 텍스트 검색 관련 기사를 더 보려면 PHP 중국어 웹사이트를 주목하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.