batrox/phonetic-algorithms

音韵算法用于模糊搜索 | PHP

v1.0.0 2024-02-26 15:12 UTC

This package is auto-updated.

Last update: 2024-09-29 15:42:34 UTC


README

Build Status Coverage Status Latest Stable Version Total Downloads Latest Unstable Version License

Phonetic-Algorithms

描述

  • "PhoneticGerman"-类

通过“科隆音韵学”为德语提供音韵算法:en.wikipedia.org/wiki/Cologne_phonetics

  • "PhoneticEnglish"-类

通过“metaphone”为英语提供音韵算法:en.wikipedia.org/wiki/Metaphone

  • "PhoneticFrench"-类

通过“SOUNDEX FR”为法语提供音韵算法:www.roudoudou.com/phonetic.php

安装

  1. 在您的项目中安装并使用 composer
  2. 通过 composer 需求此包
composer require voku/phonetic-algorithms

用法

如果您需要针对单个单词进行模糊搜索,例如姓氏或产品名称,请使用 "phonetic_word"-方法。

use voku\helper\Phonetic;

$words = array(
  'Moelleken',
  'Mölleken',
  'Möleken',
  'Moeleken',
  'Moellecken',
  'Möllecken',
  'Mölecken',
);
$phonetic = new Phonetic('de');
foreach ($words as $word) {
  $phonetic->phonetic_word($string); // '6546'
}

您可以使用 "phonetic_sentence"-方法处理句子。

use voku\helper\Phonetic;

$string = 'Ein Satz mit vielen Wortern';
$phonetic = new Phonetic('de');
$phonetic->phonetic_sentence($string, (bool) false, (false|int) false); 

// [
//   'Ein' => '06', 
//   'Satz' => '8', 
//   'mit' => '62', 
//   'vielen' => '356', 
//   'Wortern' => '37276'
// ]

您可以使用 "phonetic_matches"-方法在单词数组中搜索单词。

use voku\helper\Phonetic;

$phonetic = new Phonetic('de');

$tests = array(
    'Moelleken',  // '6546',
    'Mölleken',   // '6546',
    'Möleken',    // '6546',
    'Moeleken',   // '6546',
    'oder',       // '027',
    'was',        // '38',
    'Moellecken', // '6546',
    'Möllecken',  // '6546',
    'Mölecken',   // '6546',
);

$phonetic->phonetic_matches('Moelleken', $tests);
    
// [
//   'Moelleken'  => 'Moelleken',
//   'Mölleken'   => 'Moelleken',
//   'Möleken'    => 'Moelleken',
//   'Moeleken'   => 'Moelleken',
//   'Moellecken' => 'Moelleken',
//   'Möllecken'  => 'Moelleken',
//   'Mölecken'   => 'Moelleken',
// ]

历史

有关变更的完整历史记录,请参阅 CHANGELOG