Maison  >  Article  >  développement back-end  >  Recherche en texte intégral Laravel xunsearch

Recherche en texte intégral Laravel xunsearch

高洛峰
高洛峰original
2017-02-09 09:55:202773parcourir

Avant de commencer, il est fortement recommandé de parcourir la documentation officielle de xunsearch

Introduction à Xunsearch

Xunsearch est une solution de recherche en texte intégral hautes performances et complète .
Xunsearch est conçu pour aider les développeurs généraux à créer rapidement et facilement leurs propres moteurs de recherche en texte intégral pour les données massives existantes.

Cliquez ici pour plus de détails

Environnement de test :

Serveur Linux 2 :

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

Configuration du serveur backend xunsearch :

PHP version 7.0.13 n'a pas de cache installé. Il est recommandé d'installer un cache dans l'environnement de production

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

Connectez-vous au serveur B et exécutez la commande suivante pour installer. package d'installation

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

pour exécuter le script d'installation, suivez les invites, entrez principalement le répertoire d'installation du progiciel xunsearch Il est fortement recommandé de prévoir un répertoire séparé au lieu de le mélanger avec d'autres répertoires de logiciels. .

cd xunsearch-full-1.4.10/
sh setup.sh

L'interface interactive d'installation s'affichera. Appuyez ensuite sur Entrée directement pour installer sur le chemin par défaut
Ensuite, buvez une tasse de café et attendez un moment. L'invite de réussite de l'installation suivante apparaîtra. .

+==========================================+
| 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可能需要配置得严格,本文仅为测试

Configurez iptables, ignorez cette opération

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

Démarrez le service

/usr/local/xunsearch/bin/xs-ctl.sh -b inet start
Contenu de sortie de démarrage :

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

Installer le SDK PHP xunsearch

cd project/root/path
composer require --prefer-dist hightman/xunsearch
Créer un fichier de configuration de projet, un projet correspond à un fichier de configuration, nom du projet Vous ne pouvez pas répéter

cp app\vendor\hightman\xunsearch\app\demo.ini app\config\search-demo.ini
pour modifier le contenu du fichier que vous venez de créer, où les adresses IP de server.index et server.search sont les adresses IP du serveur sur lequel se trouve le service xunsearch installé

;搜索配置文件示例
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
Modifiez le fichier app /routes/web.php, écrivez du code de test de recherche client

###################### 测试模块 ####################
/*
 * 全文搜索测试部分
 */
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);
});
Utilisez un navigateur pour accéder aux deux itinéraires ci-dessus pour tester la fonction

Accès :

http://Votre nom de domaine/makedoc/titre/content teste l'index généré

Exemple de test :

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

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

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

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

Accès via :

http://Votre fonction de recherche de nom de domaine/recherche/test de mots clésPar exemple, recherchez des mots clés
项目

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

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

========
总数:2
Par En suivant les étapes ci-dessus, nous avons effectué l'exemple de recherche en texte intégral le plus simple.

Si vous souhaitez en savoir plus, veuillez lire la documentation officielle de xunsearch.

Contenu de référence

  1. Documentation officielle de xunsearch


Avant de commencer, il est fortement recommandé de parcourir la documentation officielle de xunsearch

Introduction à Xunsearch

Xunsearch est une solution de recherche en texte intégral hautes performances et complète.

Xunsearch est conçu pour aider les développeurs généraux à créer rapidement et facilement leurs propres moteurs de recherche en texte intégral pour les données massives existantes.

Cliquez ici pour plus de détails

Environnement de test :

Serveur Linux 2 :

Configuration du serveur backend xunsearch :

PHP version 7.0.13 n'a pas de cache installé. Il est recommandé d'installer un cache dans l'environnement de production

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

Connectez-vous au serveur. B et exécutez les instructions suivantes pour installer, décompresser xunsearch et installer le package

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

exécutez le script d'installation et suivez les invites, en entrant principalement dans le répertoire d'installation du package logiciel xunsearch. Il est fortement recommandé de planifier un. répertoire séparé au lieu de le mélanger dans d’autres répertoires de logiciels.

cd xunsearch-full-1.4.10/
sh setup.sh

L'interface interactive d'installation s'affichera. Appuyez ensuite sur Entrée directement pour installer sur le chemin par défaut
Ensuite, buvez une tasse de café et attendez un moment. L'invite de réussite de l'installation suivante apparaîtra. .

+==========================================+
| 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可能需要配置得严格,本文仅为测试

Configurez iptables, ignorez cette opération

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

Démarrez le service

/usr/local/xunsearch/bin/xs-ctl.sh -b inet start
Contenu de sortie de démarrage :

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

Installer le SDK PHP xunsearch

cd project/root/path
composer require --prefer-dist hightman/xunsearch
Créer un fichier de configuration de projet, un projet correspond à un fichier de configuration, nom du projet Vous ne pouvez pas répéter

cp app\vendor\hightman\xunsearch\app\demo.ini app\config\search-demo.ini
pour modifier le contenu du fichier que vous venez de créer, où les adresses IP de server.index et server.search sont les adresses IP du serveur sur lequel se trouve le service xunsearch installé

;搜索配置文件示例
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
Modifiez le fichier app /routes/web.php, écrivez du code de test de recherche client

###################### 测试模块 ####################
/*
 * 全文搜索测试部分
 */
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);
});
Utilisez un navigateur pour accéder aux deux itinéraires ci-dessus pour tester la fonction

Accès :

http://Votre nom de domaine/makedoc/titre/content teste l'index généré

Exemple de test :

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

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

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

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

Accès via :

http://Votre fonction de recherche de nom de domaine/recherche/test de mots clésPar exemple, recherchez des mots clés
项目

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

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

========
总数:2
Par En suivant les étapes ci-dessus, nous avons effectué l'exemple de recherche en texte intégral le plus simple.

Si vous souhaitez en savoir plus, veuillez lire la documentation officielle de xunsearch.

Pour plus d'articles liés à la recherche en texte intégral de Laravel xunsearch , veuillez faire attention au site Web PHP chinois !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn