levenify/levenify-bundle

在您的Symfony项目中实现更好的Levenshtein函数

安装次数: 2,472

依赖者: 0

建议者: 0

安全性: 0

星标: 3

关注者: 1

分支: 1

开放问题: 0

类型:symfony-bundle

dev-master 2020-04-25 15:18 UTC

This package is auto-updated.

Last update: 2024-09-28 21:11:10 UTC


README

在您的Symfony项目中实现更好的Levenshtein函数

如何安装Levenify

  • 步骤 1 : 安装包
composer req levenify/levenify-bundle
  • 步骤 2 : 使用命令设置您的数据库
bin/console levenify:install
  • 步骤 3 : 设置您的config.yml
# app/config/config.yml
doctrine:
    orm:
        dql:
            numeric_functions:
                levenshtein: Levenify\LevenifyBundle\ORM\Doctrine\DQL\Levenshtein
                levenshtein_ratio: Levenify\LevenifyBundle\ORM\Doctrine\DQL\LevenshteinRatio

如何使用Levenify

  • 使用查询构建器
<?php
    public function getProductByName($searchString, $tolerance = 3) {
        $queryBuilder = $this->_em->createQueryBuilder()
           ->select('p')
           ->from('Product::class', 'p')
           ->where('LEVENSHTEIN(p.name, :searchString) <= :tolerance')
           ->setParameter('searchString', $searchString)
           ->setParameter('tolerance', $tolerance)
        ;

        return $queryBuilder->getQuery()->getResult();
    }
?>
  • 使用DQL
<?php
    public function getProductByName($searchString, $tolerance = 3) {

        $dqlString = '
            SELECT product
            FROM Product::class p
            WHERE LEVENSHTEIN(p.name, :searchString) <= :tolerance
        ';

        $query = $this->_em->createQuery($dqlString)
           ->setParameter('searchString', $searchString)
           ->setParameter('tolerance', $tolerance)
        ;

        return $query->getResult();
    }
?>

--- 问题:基本的Levenshtein函数和Levenify之间的区别是什么?

--- 回答:函数的第一个参数可以由多个单词组成!