技术教程

学习建站技术教程,分享建站系统中主题模板安装及二次开发的编程代码技术教程分享
python 文本字符串模糊匹配算法+打分机制代码分享

python 文本字符串模糊匹配算法+打分机制代码分享

095745bnbibnjcilvujbjw.png

import math
from typing import Callable, List, Tuple
 
 
def fuzzy_match_and_score(
        count: int,
        query: str,
        pred: Callable[[int], str]
) -> List[Tuple[int, int]]:
    """模糊匹配并评分
 
    :param count: 候选字符串数量
    :param query: cha询字符串
    :param pred: 获取候选字符串的函数,接受索引返回字符串
    :return: 按得分降序排列的(索引, 得分)列表
    """
 
    def fuzzy_match_score(q: str, t: str) -> int:
        """基于原始C++算法的模糊匹配评分"""
        score = 0
        last_match = -1
        qi = ti = 0
        q_len, t_len = len(q), len(t)
        q = q.lower()
        t = t.lower()
 
        while qi < q_len and ti < t_len:
            if q[qi] == t[ti]:
                score += 10  # 基础匹配分
 
                # 位置相关奖励
                if ti == 0:
                    if qi == 0:
                        score += 50  # 双首字母匹配
                    else:
                        score += 30  # 目标首字母匹配
                elif qi == 0:
                    score += 20  # cha询首字母出现在目标中
 
                # 单词边界检测
                if ti > 0 and (
                        t[ti - 1] in ('_', ' ', '-') or
                        (t[ti - 1].islower() and t[ti].isupper())
                ):
                    score += 25  # 边界匹配奖励
 
                # 连续匹配检测
                if last_match >= 0:
                    gap = ti - last_match - 1
                    if gap == 0:
                        score += 25  # 连续匹配奖励
                        if last_match > 0 and ti - last_match == 1:
                            score += 10
                    else:
                        penalty = min(int(math.pow(gap, 1.5)), 15)
                        score -= penalty  # 跳跃惩罚
 
                last_match = ti
                qi += 1
            ti += 1
 
        if qi == q_len:
            # 长度匹配系数 (0.5-1.0)
            length_ratio = q_len / t_len
            score = int(score * (0.5 + 0.5 * length_ratio))
 
            # 位置系数 (0.7-1.0)
            position_ratio = 1.0 - (ti / t_len)
            score = int(score * (0.7 + 0.3 * position_ratio))
 
            return max(score, 1)
        return 0
 
    results = []
    for i in range(count):
        target = pred(i)
        if score := fuzzy_match_score(query, target):
            results.append((i, score))
 
    # 按得分降序,同分按索引升序
    results.sort(key=lambda x: (-x[1], x[0]))
    return results
 
 
#使用示例
# 候选数据源
candidates = [
    "MB_YESNO",
    "MB_ICONQUESTION",
    "MB_ABORTRETRYIGNORE",
    "IDOK",
    "IDCANCEL",
    "MESSAGEBOX_YESNO"
]
 
# cha询字符串
query = "m_no"
 
# 执行模糊匹配
results = fuzzy_match_and_score(
    count=len(candidates),
    query=query,
    pred=lambda i: candidates<i>
)
print(f"总共匹配到 {len(results)} 项:")
for index, score in results:
    print(f"\t{candidates[index]}(得分: {score})")
# print(results)
#长度匹配因素 = cha询文本长度 / 目标文本长度
#匹配位置因素 = 1.0 - (目标文本cha询位置 / 目标文本长度)
#计算公式: (总分 (0.5 + 0.5 长度匹配因素)) (0.7 + 0.3 匹配位置因素)
#总分: 10+50+10-1+10-5+10+25+10=119
#长度匹配因素: 4 / 8 = 0.5
#匹配位置因素: 1.0 - (8 / 8) = 0.0
#最终得分:套入长度/位置因素, 总得分62
#1        m        0        基础+10, 双首字母匹配+50
#2        _        2        基础+10, 跳跃1个字符惩罚-1
#3        n        6        基础+10, 跳跃3个字符惩罚-5
#4        o        7        基础+10, 连续匹配+25, 二次连续+10
# 输出:[(0, 75), (1, 61), (3, 44), (4, 1)]</i>

uniapp中uview的多行输入框 textarea 右下角完成改为换行方法

uniapp中uview的多行输入框 textarea 右下角完成改为换行方法

<u--textarea confirm-type="return" :maxlength="-1" v-model="data.remark" placeholder="请填写任务需求"></u--textarea>


开发WordPress时怎么用短代码中过滤掉br标签呢

开发WordPress时怎么用短代码中过滤掉br标签呢

WordPress 短代码中过滤掉br标签

function add_style( $atts, $content = null ) {
    $pure_content = str_replace("<br />","",$content);
    return '<style>' . $pure_content . '</style>';
}
add_shortcode( 'style', 'add_style' );

zblogphp系统怎么固定网址需要指定域名使用

zblogphp系统怎么固定网址需要指定域名使用

在很多使用,我们在使用zblog博客系统建站的时候,需要固定我们的网址,来确保不出现分流和权重分散的问题,今天给大家分享一下官方带来的正确姿势。


使用空间面板的文件管理或者 FTP 修改文件:path/zb_users/c_option.php;


首先我们需要寻找到上方的文件,并且打开( 推荐使用宝塔面板 ),找到后,下载本地或者直接进行编辑

WordPress限制用户上传图片尺寸大小代码和设置方法

WordPress限制用户上传图片尺寸大小代码和设置方法

WordPress 多用户站点,文章作者上传图片时图省事,直接上传未经过任何压缩处理的原始图片,几M的文件,不仅占用空间,而且影响加载速度。可以通过下面的代码限制上传的尺寸,当上传图片超出尺寸限制时,会抛出最大图片尺寸的错误提示。


代码添加到当前主题函数模板 functions.php 中:


按图片尺寸限制

怎么自定义 WordPress 注册登录提示错误信息的文字代码分享

怎么自定义 WordPress 注册登录提示错误信息的文字代码分享

自从 WordPress 6.0 发布后,简体中文版一直翻译不全,比如菜单设置页面有英文,对管理员来说障碍不是很大,但让人受不了的是注册登录错误提示信息也翻译不全,比如用户注册时填写邮箱格式不对,直接蹦出来个“Error: The email address is not correct.”用户肯定懵逼,中文的网站咋还显示英文呢?


那就自己动手解决吧,修改这些提示文字,再加上这些文字也并不一定符合自己的要求,提示文字在是WordPress 程序 wp-includes 目录 user.php 文件中,可以根据自己的喜好修改,修改完记得将文件编码修改为:UTF-8 无BOM(无签名),不然会显示乱码。当然下次更新还要再改一次,有些麻烦,可以通过下面的代码,修改这些默认的提示文字。

WordPress主题开发获取评论调用代码2种方法代码

WordPress主题开发获取评论调用代码2种方法代码

一、通过使用全局变量获取评论深度

我相信您应该知道wp_list_comments()函数,它可以将评论打印在网站页面上。


为什么这个功能很酷?


1、这个函数运行一个评论循环,并设置一个全局变量,该变量包含循环中当前评论的深度级别。

2、wp_list_comments()允许您通过使用回调参数指定自己的评论模板。


WordPress开发获取用户ID的8种方法代码

WordPress开发获取用户ID的8种方法代码

在 WordPress 主题的开发过程中,获取用户 ID 的频率是很高的,可在 WordPress 中查看用户信息,也可以通过代码直接获取。


一、在 WordPress 后台区域找到用户 ID

这是一个非常简单的方法,需要有后台管理权限的用户才能查看。

1、登录 WordPress  后台

2、转到用户——所有用户列表页面

3、编辑用户

4、在当前页面链接中的 user_id= 后面的数字即是用户的 ID

WordPress主题开发:CSS文件该怎么写?主样式表(style.css)

WordPress主题开发:CSS文件该怎么写?主样式表(style.css)

为了使WordPress将主题模板文件的集合识别为有效的主题,style.css文件需要位于主题的根目录中,而不是子目录。

有关如何将style.css文件包含在主题中的更详细说明,请参阅“启动脚本和样式”的“样式表”部分。


WordPress使用style.css的标题注释部分在“外观(主题)”仪表板面板中显示有关主题的信息。


示例

WordPress主题开发:模板文件的介绍及文件列表说明

WordPress主题开发:模板文件的介绍及文件列表说明

模板术语

使用WordPress主题时,术语“模板”以不同的方式使用:


主题中存在模板文件,并表达您的网站的显示方式。

页面模板是仅适用于页面以更改其外观的页面模板。 页面模板可以应用于单个页面,页面部分或一类页面。

模板标签是内置的WordPress功能,您可以在模板文件中使用来检索和显示数据(如the_title()和the_content())。

模板层次结构是WordPress用于根据所请求的内容决定要使用哪个主题模板文件的逻辑。

Mac端MAMP PRO Not Found The requested URL was not found on this server.问题解决

Mac端MAMP PRO Not Found The requested URL was not found on this server.问题解决

Mac端MAMP PRO Not Found The requested URL was not found on this server.问题解决,

青舟在这里为大家分享一下解决方案,也是自己备份一下。

很多人安装mamp pro后localhost能正常访问但是访问127.0.0.1的时候就会出现404的情况,其实很简单就能解决

20181106192158283.png

使用homebrew 的时候失败fatal: not in a git directory Error: Command failed with exit 128: git

使用homebrew 的时候失败fatal: not in a git directory Error: Command failed with exit 128: git

使用homebrew 的时候失败fatal: not in a git directory Error: Command failed with exit 128: git

解决方法。 亲测有效