プロが教えるわが家の防犯対策術!

曖昧検索について教えてください。
以下をそれぞれ同等とみなして検索できるでしょうか?
(1)大文字、小文字
(2)"masui"=="matui"
(3)"APPPLE"=="APPLE"
(4)"masui"=="matsi"
(5)引っ越==引越==引っ越し==引越し
(6)長音==マイナス==ダッシュ
(7)繰り返し記号(々==ゝ==〃)
(8)ひらがな・カタカナ(ぞう==ゾウ)
(9)発音の同じ文字(じぢ==ずづ==いゐ==えゑ)
(10)カンマ==ピリオド==句点==読点
(11)括弧 () == [] == {} ==()==〔〕==[]
(12)新字体・旧字体・異体字(医学==醫學==医斈)
(13)カナ表現(バイオリン==ヴァイオリン)
(14)(エヌ・ティ・ティ==エヌティティ)
(15)空白の挿入 (ソ ニ ー==ソニー)

A 回答 (3件)

 (6)~(14)に関しても、手間を惜しまなければ、可能性があるような気がします。


 考え方としては、大文字・小文字の比較と同じ手法です。つまり、長音記号やマイナスは全部ダッシュに、繰り返し記号は直前の文字に、ひらがなはカタカナに、と言った具合に、全部の文字を変換してしまうわけです。
 データを、比較時点で関数で変換すると演算に許容できない時間がかかるようであれば、テーブル内のデータの方は事前に(たとえば挿入時点とか)変換して比較用の別のフィールドに格納しておくのもありでしょう。
 変換用の規則データは、徐々に増やしていくのも手ですね。繰り返し記号はちょっとつらいですが、他の物は単純な文字変換に過ぎませんから、変換用のテーブルを一つ作って、変換関数からこれを参照するようにしておけば、だんだんと規則も拡充できるかもしれません。
 要するに、基準を作って、その基準に合うように、比較元と比較先のデータを全部変換する規則さえ作れれば、後は、気合いと手間だけに集約されますね。
 ただ・・・(3)~(5)は・・・規則を作るのも面倒だし、変換テーブルも莫大になりそう・・・さすがに、気合いでやるにはちょっと厳しいかもですね。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
なるほどなるほど、(3)~(5)以外はこつこつとやれそうですね。
大変参考になりました。ありがとうございました。

お礼日時:2007/08/10 20:20

REGEXPで正規表現をつかえばたいていのあいまい表現は回避できるかと。

    • good
    • 0
この回答へのお礼

お礼が遅くなってすみません。
正規表現がどれくらいの範疇で使用可能なのかが見えないので、いろいろみたのですが、(1)ぐらいならOKということは図りましたが、それ以外があいまい表現が可能かどうかまだわからない状態です。上の(2)から(15)までで、どれが、正規表現で可能なのか教えていただけるとありがたいです。

お礼日時:2007/08/16 14:49

基本的には、


完全一致(全てが一致)
前方一致(先頭から何文字が一致)
後方一致(最後から何文字が一致)
があります。
大文字/小文字 全角/半角 は比較対象をどちらか一方に統一する
ことで、検索できます。
空白文字のあるデータと、空白文字のないデータは、関数で、空白文字を削除した後、比較することもできます。
2 3 4 5 6 7 9 10 11 12 13 14 は難しいでしょうね。
    • good
    • 0
この回答へのお礼

大変すばやいご回答ありがとうございます。
15個のうち、ほとんどは難しいですよね。あきらめざる得ないでしょうね。

お礼日時:2007/08/10 17:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す