Le service de recherche en texte intégral est un moteur de recherche en texte intégral encapsulé par le projet open source
xunsearch, et le service est toujours en cours d'amélioration.
1. Installez le service de recherche via composer et entrez la commande suivante pour installer la dernière version.
composer require antsfree/mxusearch dev-master
OR
composer require antsfree/mxusearch '^0.1'
2. Ajoutez les services suivants dans les fournisseurs de tableaux de service dans config / app.php.
AntsfreeMxusearchMxusearchProvider::class
3. Ajoutez la façade suivante dans les alias du tableau de façade dans config / app.php.
'Mxusearch' => AntsfreeMxusearchMxusearch::class,
4. Exécutez la commande suivante pour configurer le fichier de configuration mxusearch.php ;
php artisan vendor:publish --provider="AntsfreeMxusearchMxusearchProvider"
5. Installation distribuée, chaque projet laravel doit configurer les paramètres env suivants:
| Configuration env | Définition chinoise | valeur par défaut |
|---|---|---|
| MXUSEARCH_PROJET | Nom de la bibliothèque d'index | mxu_project |
| MXUSEARCH_CHARSET | Codage de caractère | UTF-8 |
| MXUSEARCH_INDEX_HOST | IP de serveur d'index | 127.0.0.1 (voir "Note" pour la configuration de déploiement distribué) |
| MXUSEARCH_INDEX_PORT | Port d'index | 8383 |
| MXUSEARCH_SEARCH_HOST | Rechercher le serveur IP | 127.0.0.1 (voir "Note" pour la configuration de déploiement distribué) |
| MXUSEARCH_SEARCH_PORT | Port de recherche | 8384 |
| MXUSEARCH_INI | Nom du fichier de configuration INI | mxusearch.ini |
Remarque: Toutes les configurations ci-dessus ont des valeurs par défaut, parmi lesquelles les hôtes d'index et de recherche doivent être distingués dans le déploiement distribué. Pointez uniformément vers le serveur où se trouve le service de recherche.
6. Exécutez la commande console pour générer un fichier ini
php artisan search:reset-ini
| Numéro de série | Nom de méthode | Définition chinoise | Remarque |
|---|---|---|---|
| 1 | addition | Créer un index | Single prend en charge la synchronisation instantanée, les multiples ont des erreurs de temps, spécifiques à 2 à 3 minutes, selon la situation spécifique |
| 2 | DeleteIndex | Supprimer l'index | Plusieurs pièces simples prennent effet immédiatement sans délai |
| 4 | SearchIndex | Trouver un index | Prise en charge de SetFuzzy Fuzzy Query, prise en charge de la requête spécifique axée sur le champ (colonne: clé) |
| 5 | insider | Effacer l'index | Effectif immédiatement sans délai |
| 6 | Rebuildindex | Reconstruire l'index | Pas encore pris en charge |
| 7 | getIndexcount | Obtenez le nombre total d'index | |
| 8 | berçard | Détecter l'état du service de recherche de texte complet | Sortie directement l'état actuel et le numéro d'index |
| 9 | insigne | Forcer un rafraîchissement du journal de recherche | |
| 10 | gethotwords | Obtenez des termes de recherche populaires | |
| 11 | getmatchnum | Obtenez le nombre de correspondances d'index | |
| 12 | insigne | Force un rafraîchissement de l'indice | Forcez une rafraîchissement à réaliser la recherche instantanée de l'index |
| 13 | lâche | Forcer un rafraîchissement du journal de recherche | |
| 14 | berçard | Détection de l'état du service Xunsou | |
| 15 | getKeywords | Fonction de segmentation du mot texte | |
| 16 | resetinifile | Réinitialiser la méthode du fichier INI | |
| 17 | multise recherche | Requête multi-conditionnement |
Fournir une implémentation de la commande artisanale:
| Numéro de série | commandement artisanal | Signification de la console | Remarque |
|---|---|---|---|
| 1 | Recherche: ajouter | Créer un index | Single prend en charge la synchronisation instantanée, les multiples ont des erreurs de temps, spécifiques à 2 à 3 minutes, selon la situation spécifique |
| 2 | Recherche: supprimer | Supprimer l'index | Plusieurs pièces simples prennent effet immédiatement sans délai |
| 3 | Recherche: recherche | Trouver un index | Interaction terminale, vous pouvez sélectionner la plage de correspondance |
| 4 | Recherche: claire | Effacer l'index | Effectif immédiatement sans délai |
| 5 | Recherche: Check-Server | Détecter l'état du service de recherche de texte complet | Sortie directement l'état actuel et le numéro d'index |
| 6 | Recherche: rincer | Force le rafraîchissement de l'index et du journal de recherche | Par défaut, il est créé de manière asynchrone et a forcé un rafraîchissement pour implémenter la recherche instantanée d'index. |
| 7 | Recherche: SCWS | Commande de participe de mot texte | |
| 8 | Recherche: réinitialisation-ini | Réinitialisez le fichier INI | Reconfigurer les fichiers INI en fonction des éléments de configuration |
| 9 | Recherche: List-Hotwords | Voir la liste des mots chauds | Sortie directe de la ligne de commande |
1. Fichier de configuration ini : mxu-backend/config/mxusearch.ini ;
2. Configuration du serveur
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. Configuration du champ d'index
[id]
type = id
tokenizer = full
[column_id]
tokenizer = full
index = self
......
......
Exemple de méthode
/**
* 多条件查询功能
*
* @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 = []);
Demander des paramètres
| Nom du paramètre | taper | Description du paramètre | Requis | Remarque |
|---|---|---|---|---|
| $ mot-clé | chaîne | Mots clés | N | |
| $ champ | chaîne | Nom de champ | N | Null par défaut, indiquant la correspondance du texte intégral |
| $ autre_field_value | tableau | Autres paramètres multi-conditions | N | Tableau vide par défaut |
| $ gamme | tableau | Filtrage des conditions d'intervalle | N | |
| $ limite | int | Paramètres de pagination | N | Par défaut 10 éléments |
| Page $ | int | Paramètres de pagination | N | Par défaut 1 |
| $ Trie | tableau | Tri | N | Par défaut vide |
Demander un exemple
$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 par défaut;Guide du SDK XUNSOU