- 締切済み
検索結果の重み付け
以下のようなテーブルがあったとして、 カラムA 名前 | カラムB 住所 横谷 | 横浜市 横山 | 谷町 横井 | 宇都宮市 WEBの検索のように複数の単語にて検索をかけるとき、 例えば「横」 「谷」 のワードで検索された時に 該当するものが多い順に 1,横谷 2,横山 3、横井 の順で sqlにてorder by するにはどのような方法がありますか?
- みんなの回答 (1)
- 専門家の回答
みんなの回答
noname#212058
回答No.1
例えば、以下のような式でフィールドに含まれる「文字」の数を数えることができます。 (CHAR_LENGTH([列名]) - CHAR_LENGTH(REPLACE([列名], '文字', ''))) / CHAR_LENGTH('文字') これを応用すれば、「横」「谷」の数を数えて、その内容で ORDER BY することができるでしょう。 ORDER BY (CHAR_LENGTH([列名]) - CHAR_LENGTH(REPLACE([列名], '横', '')) + (CHAR_LENGTH([列名]) - CHAR_LENGTH(REPLACE([列名], '谷', '')) ただ、この方法は計算量が多くなるので、検索対象のデータ量が多いと実用的なパフォーマンスが出ない可能性があります。あしからず。
お礼
なるほどー アイディアありがとうございます。