0

mySQLの文字列ランキングアルゴリズム

クイックシルバースコアリングアルゴリズム

PHPポート
Javascriptポート
MySqlポート(ああリンクなし)それは私の問題です読み続けてください

使用例:

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

フィールド:
コード
code_text

php関数に対してjQueryajax呼び出しを行っています。

 $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()を追加できません(これにより、phpまたはjavascriptで以前の場所に移動できます)

この時点でそこに滑り込むでしょう(Stackoverflowは素晴らしい!!!素晴らしいコミュニティです!)ありがとう、ダスティン

4

1 に答える 1

1
select code, code_text, match(code,code_text) against('inputstring') as score
from ICD9_codes

これは、MySQL 5.0 リファレンスの全文検索機能のセクションから取得したものです。

于 2012-01-11T21:44:27.123 に答える