トップ回答者
濁音、半濁音などを踏まえた、あいまい検索

質問
回答
-
-
> 上記あたりを拝見すると一度検索語句を変換してみたいな感じは読み取れたのですが、
参考にされている Web サイトの方法を見ますと、単純に、ある文字を決まったパターン
で別の文字に置き換えているだけのように見えます(例えば、ひらがなをカタカナに、濁
音を清音に)。一方、やりたいことは「いづみし」、「いすみし」、「ぃずみし」などで検索をかけて「いずみ
し」をヒットさせることと理解していますが、参考にされている Web サイトの方法のよう
な単純な変換ではそれは無理なようです。.NET Framework のライブラリや SQL Server の関数などにも、そのような変換機能
または曖昧検索機能を持っているものはないと思います(自分が知る限りですが)。曖昧検索は深くて高度なジャンルのようで、自分のような素人が口を出すのはおこがまし
いですが、今回のようなケースでは辞書を作って検索するのが現実的と思います。ただし、
日本全国の市町村すべての読み方の候補を列挙した辞書を作る手間が問題ですが。辞書を使わないで「いづみし」、「いすみし」、「ぃずみし」などを「いずみし」と認識できるよ
うなアルゴリズムを考えて、コードにして実装するのは、残念ながら自分の手に余ります。- 回答としてマーク すいか 2009年12月28日 18:37
-
まず、質問はVisual Studioについてであり、「データベース」とはあるもののSQL ServerなどのDBエンジンを使用しているかどうかは言及されていませんが…
SQL Serverのフルテキスト検索 にあいまい検索のための枠組みはあるみたいですね。ただ、使い方は知りません。
また、どのような文字があいまいとみなされるのかも書かれていません。自分でXMLファイルを書くみたいですが。
結局、私の最初のコメントと同じで、何を曖昧とみなすのか、その部分を明確にする必要があるということです。
で、そういうことをするなら、IEqualityComparer<string>を実装してそれを使って比較を行えばいい、
つまりは「プログラムというのはそういうのを書くことです。同一視したいのなら、そういう検索処理を書きましょう。」に行きつくと思います。
# 大高とかピンポイントなネタを…隣の駅の学校に通ってましたよ。- 回答としてマーク すいか 2009年12月28日 18:37
すべての返信
-
-
はい。その通りになります。
検索してみたのですが、探し方が下手なのか見つけることが出来ませんでした。
http://dbweb.0258.net/wiki.cgi?page=%A4%A2%A4%A4%A4%DE%A4%A4%B8%A1%BA%F7
http://shin3tky.blogspot.com/2009/07/blog-post_13.html
上記あたりを拝見すると一度検索語句を変換してみたいな感じは読み取れたのですが、私には難しく、
また、エクセルでは標準の機能で上記が出来るみたいでしたので他にやり方があるのではと思い質問した次第です。
-
> 上記あたりを拝見すると一度検索語句を変換してみたいな感じは読み取れたのですが、
参考にされている Web サイトの方法を見ますと、単純に、ある文字を決まったパターン
で別の文字に置き換えているだけのように見えます(例えば、ひらがなをカタカナに、濁
音を清音に)。一方、やりたいことは「いづみし」、「いすみし」、「ぃずみし」などで検索をかけて「いずみ
し」をヒットさせることと理解していますが、参考にされている Web サイトの方法のよう
な単純な変換ではそれは無理なようです。.NET Framework のライブラリや SQL Server の関数などにも、そのような変換機能
または曖昧検索機能を持っているものはないと思います(自分が知る限りですが)。曖昧検索は深くて高度なジャンルのようで、自分のような素人が口を出すのはおこがまし
いですが、今回のようなケースでは辞書を作って検索するのが現実的と思います。ただし、
日本全国の市町村すべての読み方の候補を列挙した辞書を作る手間が問題ですが。辞書を使わないで「いづみし」、「いすみし」、「ぃずみし」などを「いずみし」と認識できるよ
うなアルゴリズムを考えて、コードにして実装するのは、残念ながら自分の手に余ります。- 回答としてマーク すいか 2009年12月28日 18:37
-
まず、質問はVisual Studioについてであり、「データベース」とはあるもののSQL ServerなどのDBエンジンを使用しているかどうかは言及されていませんが…
SQL Serverのフルテキスト検索 にあいまい検索のための枠組みはあるみたいですね。ただ、使い方は知りません。
また、どのような文字があいまいとみなされるのかも書かれていません。自分でXMLファイルを書くみたいですが。
結局、私の最初のコメントと同じで、何を曖昧とみなすのか、その部分を明確にする必要があるということです。
で、そういうことをするなら、IEqualityComparer<string>を実装してそれを使って比較を行えばいい、
つまりは「プログラムというのはそういうのを書くことです。同一視したいのなら、そういう検索処理を書きましょう。」に行きつくと思います。
# 大高とかピンポイントなネタを…隣の駅の学校に通ってましたよ。- 回答としてマーク すいか 2009年12月28日 18:37