Laravel xunsearch Volltextsuche

高洛峰
Freigeben: 2023-03-05 15:50:01
Original
2769 Leute haben es durchsucht

Bevor Sie beginnen, wird dringend empfohlen, die offizielle Dokumentation von xunsearch zu lesen

Einführung in Xunsearch

Xunsearch ist eine leistungsstarke Volltextsuchlösung mit vollem Funktionsumfang .
Xunsearch wurde entwickelt, um allgemeinen Entwicklern dabei zu helfen, schnell und einfach ihre eigenen Volltextsuchmaschinen für vorhandene umfangreiche Daten zu erstellen.

Klicken Sie hier für Details

Testumgebung:

Linux-Server 2:

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

xunsearch-Backend-Serverkonfiguration:

PHP-Version 7.0.13 hat keinen Cache installiert.

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
Nach dem Login kopieren
Nach dem Login kopieren

Stellen Sie eine Verbindung zu Server B her und führen Sie den folgenden Befehl aus, um xunsearch zu installieren Installationspaket

wget http://www.php.cn/
tar -xjf xunsearch-full-latest.tar.bz2
Nach dem Login kopieren
Nach dem Login kopieren

Um das Installationsskript auszuführen, folgen Sie den Anweisungen und geben Sie hauptsächlich das Installationsverzeichnis des xunsearch-Softwarepakets ein. Es wird dringend empfohlen, ein separates Verzeichnis einzuplanen, anstatt es mit anderen Softwareverzeichnissen zu vermischen .

cd xunsearch-full-1.4.10/
sh setup.sh
Nach dem Login kopieren
Nach dem Login kopieren

Dann wird die interaktive Installationsoberfläche angezeigt, um die Installation im Standardpfad durchzuführen.
Trinken Sie dann eine Tasse Kaffee und warten Sie eine Weile .

+==========================================+
| 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          |
+=================================================+
Nach dem Login kopieren
Nach dem Login kopieren

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

Konfigurieren Sie iptables, ignorieren Sie diesen Vorgang

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
Nach dem Login kopieren
Nach dem Login kopieren

Starten Sie den Dienst

/usr/local/xunsearch/bin/xs-ctl.sh -b inet start
Nach dem Login kopieren
Nach dem Login kopieren

Inhalt der Startausgabe:

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

Webserverkonfiguration

Xunsearch PHP SDK installieren

cd project/root/path
composer require --prefer-dist hightman/xunsearch
Nach dem Login kopieren
Nach dem Login kopieren

Erstellen Sie eine Projektkonfigurationsdatei, ein Projekt entspricht einem Konfigurationsdatei, Projektname Sie können

cp app\vendor\hightman\xunsearch\app\demo.ini app\config\search-demo.ini
Nach dem Login kopieren
Nach dem Login kopieren

nicht wiederholen, um den Inhalt der gerade erstellten Datei zu ändern, wobei die IP-Adressen von server.index und server.search die IP-Adressen des Servers sind, auf dem sich der xunsearch-Dienst befindet installiert

;搜索配置文件示例
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
Nach dem Login kopieren
Nach dem Login kopieren

Ändern Sie die App-Datei /routes/web.php und schreiben Sie einen Client-Suchtestcode

###################### 测试模块 ####################
/*
 * 全文搜索测试部分
 */
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);
});
Nach dem Login kopieren
Nach dem Login kopieren

Verwenden Sie einen Browser, um auf die beiden oben genannten Routen zuzugreifen und die Funktion zu testen

Zugriff: http: //Ihr Domainname/Makedoc/Titel/Inhaltstest generierter Index

Testbeispiel:

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

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

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

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

Zugriff über: http://Ihr Domainname/Suche/Keyword-Testsuchfunktion
Zum Beispiel nach Schlüsselwörtern suchen项目

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

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

========
总数:2
Nach dem Login kopieren
Nach dem Login kopieren

Durch Mit den obigen Schritten haben wir das einfachste Beispiel für eine Volltextsuche abgeschlossen.
Wenn Sie weitere Details erfahren möchten, lesen Sie bitte die offizielle Dokumentation von xunsearch.

Referenzinhalt

  1. offizielle Dokumentation von xunsearch


Bevor Sie beginnen, wird dringend empfohlen, die offizielle Dokumentation von xunsearch zu durchsuchen

Einführung in Xunsearch

Xunsearch ist eine leistungsstarke Volltextsuchlösung mit vollem Funktionsumfang.
Xunsearch wurde entwickelt, um allgemeinen Entwicklern dabei zu helfen, schnell und einfach ihre eigenen Volltextsuchmaschinen für vorhandene umfangreiche Daten zu erstellen.

Klicken Sie hier für Details

Testumgebung:

Linux-Server 2:

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

xunsearch-Backend-Serverkonfiguration:

PHP-Version 7.0.13 hat keinen Cache installiert. Es wird empfohlen, einen Cache in der Produktionsumgebung zu installieren B und führen Sie die folgenden Anweisungen aus, um xunsearch zu installieren, zu entpacken und das Paket zu installieren.

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
Nach dem Login kopieren
Nach dem Login kopieren

Führen Sie das Installationsskript aus und befolgen Sie die Anweisungen. Geben Sie dabei hauptsächlich das Installationsverzeichnis des xunsearch-Softwarepakets ein. Es wird dringend empfohlen, a zu planen separates Verzeichnis, anstatt es mit anderen Softwareverzeichnissen zu vermischen.

wget http://www.php.cn/
tar -xjf xunsearch-full-latest.tar.bz2
Nach dem Login kopieren
Nach dem Login kopieren

Dann wird die interaktive Installationsoberfläche angezeigt, um die Installation im Standardpfad durchzuführen.

Trinken Sie dann eine Tasse Kaffee und warten Sie eine Weile .
cd xunsearch-full-1.4.10/
sh setup.sh
Nach dem Login kopieren
Nach dem Login kopieren


+==========================================+
| 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          |
+=================================================+
Nach dem Login kopieren
Nach dem Login kopieren

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

Starten Sie den Dienst

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
Nach dem Login kopieren
Nach dem Login kopieren

Inhalt der Startausgabe:

/usr/local/xunsearch/bin/xs-ctl.sh -b inet start
Nach dem Login kopieren
Nach dem Login kopieren

Webserverkonfiguration

INFO: starting server[xs-indexd] ... (BIND:8383)
INFO: starting server[xs-searchd] ... (BIND:8384)
Nach dem Login kopieren
Nach dem Login kopieren
Xunsearch PHP SDK installieren

Erstellen Sie eine Projektkonfigurationsdatei, ein Projekt entspricht einem Konfigurationsdatei, Projektname Sie können

cd project/root/path
composer require --prefer-dist hightman/xunsearch
Nach dem Login kopieren
Nach dem Login kopieren

nicht wiederholen, um den Inhalt der gerade erstellten Datei zu ändern, wobei die IP-Adressen von server.index und server.search die IP-Adressen des Servers sind, auf dem sich der xunsearch-Dienst befindet installiert

cp app\vendor\hightman\xunsearch\app\demo.ini app\config\search-demo.ini
Nach dem Login kopieren
Nach dem Login kopieren

Ändern Sie die App-Datei /routes/web.php und schreiben Sie einen Client-Suchtestcode

;搜索配置文件示例
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
Nach dem Login kopieren
Nach dem Login kopieren

Verwenden Sie einen Browser, um auf die beiden oben genannten Routen zuzugreifen und die Funktion zu testen

###################### 测试模块 ####################
/*
 * 全文搜索测试部分
 */
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);
});
Nach dem Login kopieren
Nach dem Login kopieren
Zugriff:

http: //

Ihr Domainname/Makedoc/Titel/Inhaltstest generierter Index

Testbeispiel:

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

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

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

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

Ihr Domainname/Suche/Keyword-Testsuchfunktion

Zum Beispiel nach Schlüsselwörtern suchen
项目Durch Mit den obigen Schritten haben wir das einfachste Beispiel für die Volltextsuche abgeschlossen.

Wenn Sie weitere Details erfahren möchten, lesen Sie bitte die offizielle Dokumentation von xunsearch.
1. 关于 xunsearch 的 DEMO 项目测试 [99%] - 2011-08-26
项目测试是一个很有意思的行为!

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

========
总数:2
Nach dem Login kopieren
Nach dem Login kopieren

Weitere Artikel zum Thema Laravel xunsearch-Volltextsuche Bitte achten Sie auf die chinesische PHP-Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage