南東京i phone勉強会(stidev) 20101030

Post on 28-May-2015

766 Views

Category:

Technology

4 Downloads

Preview:

Click to see full reader

DESCRIPTION

iPhoneで全文検索

TRANSCRIPT

iPhoneで全文検索してみたOSSライブラリを活用しよう

わたなべかずひろ@kaz_29

2010年11月8日月曜日

もくじ

自己紹介

OSSライブラリをiPhone用にコンパイルする方法

実際に使ってみる

おまけ

2010年11月8日月曜日

もくじ

自己紹介

OSSライブラリをiPhone用にコンパイルする方法

実際に使ってみる

おまけ

2010年11月8日月曜日

自己紹介わたなべかずひろ株式会社イーツー(E2)主にWeb系の受託開発会社公式サイトとか携帯CMSとか作ってます

id:kaz_29(kaz29)#iphonedev #cakephp #lithium #php #golf #cat #beer

2010年11月8日月曜日

宣伝です!

2010年11月8日月曜日

NIFTY Cloud Manager

http://iphone.e-2.co.jp/

2010年11月8日月曜日

C/C++のライブラリをiPhoneに組み込んで使っている人?

2010年11月8日月曜日

ライブラリ?ライブラリは、汎用性の高い複数のプログラムを、再利用可能な形でひとまとまりにしたものである。一般にライブラリは、それ単体ではプログラムとして動作させることはできないので実行ファイルではない。ライブラリは他のプログラムに何らかの機能を提供するコードの集まりと言うことができる。ソースコードの場合と、オブジェクトコード、あるいは専用の形式を用いる場合とがある。たとえば、UNIXのライブラリはオブジェクトコードをarと呼ばれるアーカイバでひとまとめにして利用する。

http://jp.wikipedia.org/wiki/ライブラリ

2010年11月8日月曜日

SDKにも入ってますlibiconv.dylib ~ 文字コード変換

libmecab_em.dylib ~ 形態素解析エンジン(em=サブセット?)

libncurses.dylib ~ TextUI用ライブラリ

libresolv.dylib ~ DNSリゾルバ

libsqlite3.dylib ~ SQLiteライブラリ

libxml2.dylib ~ XMLパーサー

2010年11月8日月曜日

先達の英知を使わない手は無い!

2010年11月8日月曜日

もくじ

自己紹介

OSSライブラリをiPhone用にコンパイルする方法

実際に使ってみる

おまけ

2010年11月8日月曜日

gccを使います

2010年11月8日月曜日

OSSプロダクトのコンパイル

tar xvfz hoge-x.y.z.tar.gz

cd hoge-x.y.z

./configure

make

make install

2010年11月8日月曜日

iPhone用にコンパイルする場合

tar xvfz hoge-x.y.z.tar.gz

cd hoge-x.y.z

./configure いろいろオプションをつける

# Makefileを編集する

make

make install

# 出来上がったライブラリとヘッダーをプロジェクトに追加

2010年11月8日月曜日

全文検索エンジンHyper Estraierの例

http://fallabs.com/hyperestraier/

2010年11月8日月曜日

configureの指定$ ./configure --prefix=/usr/local/iphone \

CC=/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc-4.2 \

CFLAGS=-arch i386

-isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.0.sdk

-I/usr/local/iphone/include -L/usr/local/iphone/lib

CPP=/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/g++-4.2 \

AR=/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/ar

2010年11月8日月曜日

configureの指定$ ./configure --prefix=/usr/local/iphone \

CC=/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc-4.2 \

CFLAGS=-arch i386

-isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.0.sdk

-I/usr/local/iphone/include -L/usr/local/iphone/lib

CPP=/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/g++-4.2 \

AR=/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/ar

インストール先を指定2010年11月8日月曜日

configureの指定$ ./configure --prefix=/usr/local/iphone \

CC=/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc-4.2 \

CFLAGS=-arch i386

-isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.0.sdk

-I/usr/local/iphone/include -L/usr/local/iphone/lib

CPP=/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/g++-4.2 \

AR=/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/ar

Cコンパイラを指定2010年11月8日月曜日

configureの指定$ ./configure --prefix=/usr/local/iphone \

CC=/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc-4.2 \

CFLAGS=-arch i386

-isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.0.sdk

-I/usr/local/iphone/include -L/usr/local/iphone/lib

CPP=/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/g++-4.2 \

AR=/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/ar

Cコンパイル設定を指定2010年11月8日月曜日

configureの指定$ ./configure --prefix=/usr/local/iphone \

CC=/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc-4.2 \

CFLAGS=-arch i386

-isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.0.sdk

-I/usr/local/iphone/include -L/usr/local/iphone/lib

CPP=/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/g++-4.2 \

AR=/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/ar

C++コンパイラを指定2010年11月8日月曜日

configureの指定$ ./configure --prefix=/usr/local/iphone \

CC=/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc-4.2 \

CFLAGS=-arch i386

-isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.0.sdk

-I/usr/local/iphone/include -L/usr/local/iphone/lib

CPP=/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/g++-4.2 \

AR=/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/ar

アーカイブツールを指定2010年11月8日月曜日

Makefileの編集# Simurator用

CC = /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc-4.2

AR = /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/ar

CFLAGS = -arch i386 -Wall -fPIC -fsigned-char -O3 -fomit-frame-pointer \

 -fforce-addr

# Device用

CC = /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2

AR = /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ar

CFLAGS = -isysroot /Developer-SDK402/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.0.sdk \

-arch armv6 -Wall -fPIC -fsigned-char -O3 -fomit-frame-pointer -fforce-addr

2010年11月8日月曜日

include,libsをコピー

2010年11月8日月曜日

ライブラリをプロジェクトに追加

device用

simulator用

2010年11月8日月曜日

コンパイルについてのまとめ

CC,CPP,ARなどの使用するツールをSDKの物に変更

CFLAGS

-arch i386(or armv6)でターゲットを指定

-isysroot で使用する rootディレクトリを指定

-I,-Lでインクルードパス、ライブラリパスを追加

2010年11月8日月曜日

物によってはもっと細かく調整しないといけない物も...

2010年11月8日月曜日

もくじ

自己紹介

OSSライブラリをiPhone用にコンパイルする方法

実際に使ってみる

おまけ

2010年11月8日月曜日

インデックスの作成

estcmd gather -il ja -sd /hoge/index /hoge/source

2010年11月8日月曜日

検索の準備

/* dbをオープン */

if (!(db = est_db_open((const char*)cdataPath, ESTDBREADER, &ecode))){ return ;

}/* 検索条件オブジェクトを生成する */

cond = est_cond_new();

NSInteger length = sizeof(searchkey);/* 検索条件オブジェクトに検索式を設定する */

[searchBar.text getCString:(char*)searchkey maxLength:length encoding:NSUTF8StringEncoding];est_cond_set_phrase(cond, searchkey);

CBMAP *hints;hints = cbmapopenex(MINIBNUM);/* 実際に取得する数を設定 */

est_cond_set_max(cond, 30) ;

2010年11月8日月曜日

検索/結果取得/* データベースから検索結果を得る */

result = est_db_search(db, cond, &resnum, hints);/* ヒット数を取得 */

numHits = (rp = cbmapget(hints, "", 0, NULL)) ? atoi(rp) : resnum;

/* 各該当文書を取得して表示する */

for(i = 0; i < resnum; i++){/* 文書オブジェクトを取得する */

if(!(doc = est_db_get_doc(db, result[i], 0))) continue;if((tmptitle = est_doc_attr(doc, "@title")) != NULL) {

NSLog(@"Title: %s\n", tmptitle);}

}

2010年11月8日月曜日

Demo

2010年11月8日月曜日

Demo Data

10,796 html filestotal size 75Mindex size 27M(include compressed text)

PHP Manual

2010年11月8日月曜日

もくじ

自己紹介

OSSライブラリをiPhone用にコンパイルする方法

実際に使ってみる

おまけ

2010年11月8日月曜日

NIFTY Cloud Managerの例

SOAP認証用にOpenSSLを使用

秘密鍵、クライアント証明を使ってxmlに署名

ライブラリごとに使用手順がある

メモリーリークの試験は念入りに

2010年11月8日月曜日

ライセンスには注意して!

2010年11月8日月曜日

ご清聴ありがとうございました(><)

2010年11月8日月曜日

top related