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は素晴らしい!!!素晴らしいコミュニティです!)ありがとう、ダスティン