.net - 全文搜索 : find similar software names

标签 .net search full-text-search

我正在寻找一种全文搜索算法,可以找到类似的程序名称,例如“Mozilla Firefox”和“Firefox 3.5”,或“Adobe Reader”和“Adobe Acrobat Reader v10”。Levenshtein 距离效率太低在这种情况下,因为拼写不会改变。

它必须使用串行扫描(不是索引)。

我需要最大的精度和最小的错误。你会推荐什么?

谢谢!

最佳答案

模式比较

我使用以下内容来自动更正一些域名。

这个想法是查看小模式,例如 2 个字符序列。每次找到这样的序列时,比较序列的“分数”都会增加。
最高分可能看起来相似。

前任:
火狐浏览器
=> ['mo', 'oz', 'zi', 'il', 'll', 'la', 'a', 'f', 'fi', 'ir', 're', 'fo' , '牛']

结果:

  • 'Firefox 3.5' => 5,
  • 'Adobe Reader' => 0,
  • 'Adobe Acrobat Reader v10' => 1

  • 使用压缩自动分类

    这不是基于全文的。

    这里的想法,表达在 this document , 是比较两个项的级联的压缩与压缩项的级联。

    让 c 成为返回压缩项大小的函数:

    d = c(A) + c(B) - c(A+B)

    d 越小,A 和 B 越接近。
    一个有趣的特性是该原理与类型无关,可以与音乐、图片、视频等二进制文件一起使用。

    Another link, easier to read but in French.

    使用 SGDB 全文功能

    我对 SQL Server 有点生疏,但 SQLite 或 MySQL 提供了全文搜索。
    结果包括“等级”值,可以将其视为相似度得分。

    在 MySQL 中:
    SELECT
      t.*,
      MATCH(my_field) AGAINST 'Mozilla Firefox' as relevance
    FROM
      table t
    WHERE
      MATCH(my_field) AGAINST 'Mozilla Firefox'
    ORDER BY relevance DESC
    LIMIT 100
    

    关于.net - 全文搜索 : find similar software names,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2171647/

    相关文章:

    .net - Visual Studio 项目构建为可执行文件和 DLL

    html - 每次更新站点地图都需要提交给搜索引擎吗?

    sorting - 无法在一片结构中搜索项目

    android - 如何在 SQLite 数据库中执行容错名称搜索

    postgresql - 为什么此 PostgreSQL 全文搜索在不同的 (RDS) 服务器上中断?

    .net - ActiveX,安装不工作

    c# - 使用 InvariantCultureIgnoreCase 而不是 ToUpper 进行不区分大小写的字符串比较

    c# - 你将如何声明 DLL 导入签名?

    sql - sql中的高级单词搜索

    sql - 为高交易响应全文索引是一个好主意吗?