C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: 「あ行」などの指定からのデータ取得


(過去ログ 55 を表示中)

[トピック内 12 記事 (1 - 12 表示)]  << 0 >>

■30974 / inTopicNo.1)  「あ行」などの指定からのデータ取得
  
□投稿者/ ジョタロウ (1回)-(2009/01/11(Sun) 04:41:31)

分類:[C#] 

お世話になります。

環境はVS2005です。

現在、簡易ビデオレンタルシステムを作成中です。
その一機能として、ビデオの検索機能があるのですが、「あ行」などを指定してしてのフィルタの実装方法で悩んでいます。
例えば、以下のようなビデオがあったとします。
・タイタニック
・バットマン
・マトリックス
上記3つが登録されているときに、検索で「た行」とすれば"タイタニック"のみが抽出されるというものです。
UI表示はDataGridViewを使用していますので、カラムをクリックすればソートは自動的に行われます。
また、データ自体はList<string>で持っていますので、こちらもSort()を実行すれば自動的にソートは行えます。
フィルタの方法がわかりません。
文字コードなどを使用するのでしょうか…?

何かいい知恵がありましたら、アドバイスをよろしくお願いいたします。
引用返信 編集キー/
■30975 / inTopicNo.2)  Re[1]: 「あ行」などの指定からのデータ取得
□投稿者/ うたひこ (6回)-(2009/01/11(Sun) 09:03:51)
No30974 (ジョタロウ さん) に返信

おはようございます。

C#は書けないので、手順についてのみの回答です。



> 例えば、以下のようなビデオがあったとします。
> ・タイタニック
> ・バットマン
> ・マトリックス
> 上記3つが登録されているときに、検索で「た行」とすれば"タイタニック"のみが抽出されるというものです。

つまり、先頭の文字がた行として認識されるべき文字列であるかどうかの判定をすればいいだけの問題ということでよろしいでしょうか?

であれば、もし平仮名、片仮名にだけ対応すればいいのであるならば、
そういった正規表現を用意して、マッチしてるかどうかチェックすればいいんじゃないでしょうか?
引用返信 編集キー/
■30977 / inTopicNo.3)  Re[1]: 「あ行」などの指定からのデータ取得
□投稿者/ επιστημη (1507回)-(2009/01/11(Sun) 12:57:28)
επιστημη さんの Web サイト
> 検索で「た行」とすれば"タイタニック"のみが抽出されるというものです。

foreach ( string record in データ集合 ) {
  if ( "たちつてとタチツテトだぢづでどダヂヅデド".IndexOf(record[0]) >= 0 ) {
  見つけた!
  }
}

引用返信 編集キー/
■30984 / inTopicNo.4)  Re[2]: 「あ行」などの指定からのデータ取得
□投稿者/ おてやわらか (4回)-(2009/01/11(Sun) 16:47:45)
大きなお世話ですが、素朴な疑問を、VS2005 を使っていて、VC#、VBなら
MS-SQL2005ExpressEditonを、なぜ使わないのかな?と思ってしまいました。
選択クエリ位までなら、自分でコード書かなくても、雛型位までは、ほぼ出来るはずですが。
クエリは、書く必要があります。
4GBまでデータベースが使えれば、数10万件程度までのビデオタイトル検索には十分かと。
XML Reader/Writer を使ってあげれば、簡単に外部ファイル化も出来ますし。
(本格的に使うには、MS-SQL2005Standard以上になるので、コード量は増えますが、
 コツを掴めば、MS-SQL2005EEで作った雛型を書換えて。。。というアプローチも取れます。)
もし、VS2005ExpressEditionを御使いならば、VS2008ExpressEditonにバージョンアップして、
Linqを使うというアプローチもあるのかも。(Standard以上はバージョンアップに費用がかかるので、お財布と相談。)

SQL Server 2005 Express Edition : データベースの容量が 4GB に制限される
http://cs.albis.jp/blogs/ms-18e/archive/2006/09/20/SQL-Server-2005-Express-Edition-_3A00_-_C730FC30BF30D930FC30B9306E30B95BCF914C30_-4GB-_6B303652509655308C308B30_.aspx
引用返信 編集キー/
■30988 / inTopicNo.5)  Re[3]: 「あ行」などの指定からのデータ取得
□投稿者/ ジョタロウ (2回)-(2009/01/11(Sun) 21:46:35)
皆さん、アドバイスをありがとうございます。

検索対象文字列(タイトル)はひらがな、カタカナのみではありません。
漢字やローマ字も登録されることが予想されます。
ですので、最初の一文字のみを検証データとすると検索にヒットしないものや、ヒットしなくていいものまでもがヒットしてしまう恐れがあります。
(漢字やローマ字の場合、どう読まれるのかは未確定なので)
ただ、こちらの例がカタカナOnlyだったので、そう思われたのかもしれません。
情報不足で申し訳ございません。

また、MS-SQL2005ExpressEditonは使用しないのは、本システムを使用する環境がMS-SQL2005ExpressEditonがインストールされていないかもしれない、ということと、また、使用条件としてMS-SQL2005ExpressEditonを指定することができないのです。
なので、自分でデータベースのような仕組みを行わないといけなくなってしまったという事情がございまして…。


ただ、自分で行うには結構厳しいので、登録情報に振り仮名を設け、それをもとにフィルタをかける仕組みに変更しようかと思います。
何かほかに良きアドバイス等、ございましたらよろしくお願いいたします。
引用返信 編集キー/
■30989 / inTopicNo.6)  Re[4]: 「あ行」などの指定からのデータ取得
□投稿者/ επιστημη (1511回)-(2009/01/11(Sun) 22:41:31)
επιστημη さんの Web サイト
> 登録情報に振り仮名を設け、それをもとにフィルタをかける仕組みに変更しようかと思います。

"読み"で検索かけるからには振り仮名なしには無理っしょ。

引用返信 編集キー/
■30994 / inTopicNo.7)  Re[5]: 「あ行」などの指定からのデータ取得
□投稿者/ れい (825回)-(2009/01/12(Mon) 06:20:50)
No30989 (επιστημη さん) に返信
>>登録情報に振り仮名を設け、それをもとにフィルタをかける仕組みに変更しようかと思います。
>
> "読み"で検索かけるからには振り仮名なしには無理っしょ。
>

Amazonとかのサービスを利用してタイトルから読みを取得する、という手が。
(嘘
引用返信 編集キー/
■30995 / inTopicNo.8)  Re[6]: 「あ行」などの指定からのデータ取得
□投稿者/ おてやわらか (6回)-(2009/01/12(Mon) 13:43:37)
しつこいと、怒られそうですが、MS-SQL2005EEが使えないのなら、
データを、テーブル名をつけた、CSVにして、
ADO.netとかで開くとか、
JETデータベースエンジンを、使うというのも無なのでしょうか?
(場合によっては、schema.iniの設定が必要かもです。)


引用返信 編集キー/
■30997 / inTopicNo.9)  Re[7]: 「あ行」などの指定からのデータ取得
□投稿者/ れい (826回)-(2009/01/12(Mon) 16:22:49)
No30995 (おてやわらか さん) に返信
> しつこいと、怒られそうですが、MS-SQL2005EEが使えないのなら、
> データを、テーブル名をつけた、CSVにして、
> ADO.netとかで開くとか、
> JETデータベースエンジンを、使うというのも無なのでしょうか?
> (場合によっては、schema.iniの設定が必要かもです。)

#データベース談議になっちゃいそうですが。

なぜそんなにDBを勧めるのでしょう?
ジョタロウさんの投稿内容からは、DBがよい選択肢であるかどうか、私には判断がつきません。

しつこいと自分で言うくらいですから、
おてやわらかさんはかなり強くDBを推していますよね。
「とりあえずDB入れとけば?」という条件反射的思考ではなく、
なにか理由があるのかと思います。

でしたらその理由も述べていただけると勉強になります。

私は、(あまりDBが好きではないので…)
DB無しの方が楽ならそれで済ませる人です。

引用返信 編集キー/
■30998 / inTopicNo.10)  Re[8]: 「あ行」などの指定からのデータ取得
□投稿者/ も (67回)-(2009/01/12(Mon) 17:51:07)
No30997 (れい さん) に返信
> 「とりあえずDB入れとけば?」という条件反射的思考ではなく、
> なにか理由があるのかと思います。
>
> でしたらその理由も述べていただけると勉強になります。
>
> 私は、(あまりDBが好きではないので…)
> DB無しの方が楽ならそれで済ませる人です。
DBは外部データを保守・運用するような感じ…は釈迦に説法ですね。
バックアップとかクエリで得する感じですが(クエリに関してはあいまい検索っぽいのでよくわからんけど)、
むしろ”簡易”という部分がネックでDBMSを使いたくないっぽいので配置も運用も簡単なDBMSがあればそれで十分かも。
と考えると必要最小限なシステムを自分で作るのが配置も運用も楽な気がする。
ですかね。

(javaならpure javaなhsqldbとかがあるんですが、.netだと何なんだろう?)
引用返信 編集キー/
■31060 / inTopicNo.11)  Re[4]: 「あ行」などの指定からのデータ取得
□投稿者/ .SHO (528回)-(2009/01/14(Wed) 18:14:20)
No30988 (ジョタロウ さん) に返信

> 登録情報に振り仮名を設け、それをもとにフィルタをかける仕組みに変更しようかと思います。
> 何かほかに良きアドバイス等、ございましたらよろしくお願いいたします。

情報を登録する時のIMEをフックして、読みを勝手に裏に持ち、それで検索する
ってのを昔作ったけど、結構それなりに動きました^^;
引用返信 編集キー/
■31069 / inTopicNo.12)  Re[5]: 「あ行」などの指定からのデータ取得
□投稿者/ ジョタロウ (3回)-(2009/01/15(Thu) 00:10:14)
皆さん、アドバイスをありがとうございます!
大変参考になりました。

で、結局…
>情報を登録する時のIMEをフックして、読みを勝手に裏に持ち
これに近い仕様で実装する方針に固まりました。

DBに関しては、自分自身が"敬遠気味"ということもありますが、やはりできるだけ少ない起動条件というのもあるので今回は見送ることにします。
ですが、基本的に今回のような情報を管理しようという場合、データベースを使用する方が自然なのかもしれませんね。

機会があれば、チャレンジしてみます。

どうも、ありがとうございました!
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -