【问题标题】:String Ranking Algorithm in mySQL like QuicksilverMySQL 中的字符串排序算法,如 Quicksilver
【发布时间】:2011-10-04 18:52:43
【问题描述】:

mySQL 中的字符串排序算法

Quicksilver 评分算法

PHP Port
Javascript Port
MySql Port(哦,没有链接)这是我的问题继续阅读

示例用法:

score("hello world","axl") //=> 0.0  
score("hello world","ow") //=> 0.6  
score("hello world","hello world") //=> 1.0

好的,我的问题就在这里。就像这些一样棒,感谢那些使之成为可能的人!我很想用 mysql 的方式来做这件事。数据库不是我的专业领域,但如果我只想在 MySQL 中执行此操作,我该怎么做? 并且 我应该,有更好的方法吗?

我的想法是这样的。

现实生活中的例子:

我的数据库中有 14000 多条记录。 “ICD9”医疗代码表,其中包含医疗代码和描述。

表:
ICD9_codes

字段:
代码
代码文本

我正在对 php 函数进行 jQuery ajax 调用。

 $query = $this->db->query("SELECT code, code_text FROM codes WHERE MATCH (code,code_text) AGAINST ('" .$q. "')");

这行得通,没关系。但我真正的心愿是使用评分算法

现在纠正我,如果我错了,我很可能是这样,如果你这样做,我会感到震惊:)

我认为搜索 14000 多条记录是一个非常昂贵的过程。 (即使最小值为 2 个字符)使用 jQuery 自动完成。 (这可能不适合某些人,因为就像我说的“数据库不是我的专业领域”)

所以这就是我想知道的。是否值得花时间了解 MySQL 并获得相当于

的 MySQL 功能分数
Select code, code_text, score("hello world","ow") from ICD9_codes

如果您对这个想法有任何优点或缺点很想听听?或者知道更好的方法:)

优点:

  • MySQL 拥有 搜索算法 的原生方式

缺点:

  • 如果我无法控制数据库,我将无法添加 mysql 函数 score()(这将使我无法在 phpjavascript 中执行此操作)

此时会溜进去(Stackoverflow 很棒!!!很棒的社区!) 谢谢, 达斯汀

【问题讨论】:

  • 我猜这不是正确的问题。

标签: mysql search autocomplete fuzzy-search


【解决方案1】:
select code, code_text, match(code,code_text) against('inputstring') as score
from ICD9_codes

取自 MySQL 5.0 Reference Full-Text Search Functions 部分

【讨论】:

    猜你喜欢
    • 2011-10-21
    • 1970-01-01
    • 2014-11-02
    • 1970-01-01
    • 2018-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-18
    相关资源
    最近更新 更多