2017-07-06 7 views
0

MySQLデータベースで検索して、検索した値と最も類似する値を含む行を取得しようとしています。1つの結果のMySQL検索でlevenshteinを使用する

最も近い結果は非常に異なっている場合でも、私はまだ(私は文字列の比較を行い、学習プールに「不明」を追加後で)それを返すしたいと思います

私は自分を検索したいですテーブル 'レスポンス'を 'msg1'カラムで取得し、1つの結果、最も低いレベルのレヴェンシーンスコアを取得します。

この種のもの:

SELECT * FROM people WHERE levenshtein('$message', 'msg1') ORDER BY ??? LIMIT 1 

あなたは私がでそれを並べ替え、テーブル全体を探しています見ることができるように私は非常に、ここではレーベンシュタインの概念を把握していません? (関数のスコア?)、それを1つの結果に制限します。

私は得たこの単数行から$ replyを "reply"列の値に設定したいと思います。

私が探しているものの多くの例を見つけることができません。私はこれを完全に間違っているかもしれない、私は確信していない。

ありがとうございました!

+0

これは間違っています - >距離を選択したいと思っています...何かのように: SELECT MIN e)FROM(人からの距離としてSELECT name、levenshtein(/../))......明らかに、私はMySQLを頻繁に使用しません。 – Araymer

+0

SOUNDEXはどうですか? https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_soundex –

答えて

1

あなたはどうしたら試してみてください:あなたがしきい値をしたい場合(そして、ソートに行数を制限WHERE句を使用する

SELECT p.* 
FROM people p 
ORDER BY levenshtein('$message', msg1) ASC 
LIMIT 1; 

そうでない場合は、あなただけが必要です。 ORDER BY

+0

こんにちは、私はあなたのコードを私のPDOブロックが、$ message変数が何であっても(行2と100%一致していても)データベースの一番上の行を取得しているようです。 – Jordan

+0

@Jordan。 。 。おそらく 'msg1'の周りの引用符です。私はあなたの元のコードからそれを取ったが、それは正しくない。 –

0

これは

SELECT * FROM people WHERE levenshtein('$message', 'msg1') <= 0 
+0

ORDER BY ............. –

関連する問題