Ferretによる全文検索

26 views
Skip to first unread message

八木 都志郎

unread,
Feb 19, 2011, 8:00:14 AM2/19/11
to lokk...@googlegroups.com
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

親愛なる皆様

というわけで、全文検索を作成しました。
https://github.com/yagitoshiro/lokka-ferret

*メールはどうなった?という質問は受け付けません。

仕様としては、日本語に対応したアナライザとかトークナイザを作って動かすと
形態素解析のための仕組みがサーバ側にインストールされている必要があるので、
デフォルトの半角スペースでトークンに切り分けるやり方でインデックスを作成
しておいて、MeCabまたはYahoo! Japanの形態素解析を管理画面で選択し、
毎度呼び出して検索対象のテキストと検索語を分かち書きに変換しています。

大文字/小文字とかの表記揺れはFerretで解消してくれますが、さすがに全角数字と
半角数字のようなものは対応してくれないので、インデックス化するタイミングと
検索文字を解析するタイミングで半角文字と全角文字を統一化する関数を通過させるようにしました。

いくつか問題もありまして:

・mecabはGemfileで入れるとhomebrewなMacの人は動作しない(ruby-mecabの問題)
 (だからGemfileでコメントアウトにしてある)
・dm-ferret-adapterが動かなかった(バージョンの問題?深追いできてない)

とかが解消されていません。

それから、boostなんかの設定もまだありません。とりあえず作っちゃったんで、
たぶん動くと思うんですが何かあったら教えてください。まあ、ご笑覧あれ。

八木 都志郎
yagit...@gmail.com

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (Darwin)

iEYEARECAAYFAk1fvt4ACgkQ2MEmCNA++KLClQCeLMISsKPDNq9hu7FTaDbNcQDN
vxEAnR9neczyMd4KE5LDmVqlIp/bEuiX
=kam8
-----END PGP SIGNATURE-----

Masaki Komagata

unread,
Feb 19, 2011, 9:11:44 AM2/19/11
to lokk...@googlegroups.com
ferretで全文検索・・・だと・・・

素晴らしすぎて、座り小便を漏らしそうになりました。

試してみます!

2011年2月19日22:00 八木 都志郎 <yagit...@gmail.com>:

> --
> このメールは Google グループのグループ「lokka-ja」の登録者に送られています。
> このグループに投稿するには、lokk...@googlegroups.com にメールを送信してください。
> このグループから退会するには、lokka-ja+u...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/lokka-ja?hl=ja からこのグループにアクセスしてください。
>
>

--
----------------------------------------------------------------------------------
 Masaki Komagata <koma...@gmail.com>

 ブログ: http://docs.komagata.org/
 FJORD, LLC: http://fjord.jp/
 CMS for Cloud: http://lokka.org/
 開発依頼コミュニティ: http://help-me-hackers.com/
 何作ってる人?: http://makesthis.com/
----------------------------------------------------------------------------------

Masaki Komagata

unread,
Feb 20, 2011, 1:46:29 AM2/20/11
to lokk...@googlegroups.com
Yahoo! API使ったらエラーがでましたー

http://gyazo.com/a13f51422da6668c773be82002c17aed.png

2011年2月19日22:00 八木 都志郎 <yagit...@gmail.com>:

八木 都志郎

unread,
Feb 20, 2011, 2:18:06 AM2/20/11
to lokk...@googlegroups.com, lokk...@googlegroups.com
テーマで使ってるメソッドの問題だと思うので、みてみます。

iPhoneから送信

八木 都志郎

unread,
Feb 20, 2011, 3:57:31 AM2/20/11
to lokk...@googlegroups.com
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

やっぱテーマで呼んでるメソッドですね。
で、DataMapperのオブジェクトに似たものを無理矢理作るのは
Entryクラスに手を入れるたびに動かなくなるリスクがあるので
方向としては間違っていると思います。

というわけで、専用にhamlを置いてみまっす。

八木 都志郎
yagit...@gmail.com

iEYEARECAAYFAk1g13sACgkQ2MEmCNA++KKiNQCeKMi4/rnJPcdx8ex3BmUwlO7A
oe4AnRGREO2o3CftVhxYYE761+yysYs/
=kxAO
-----END PGP SIGNATURE-----

八木 都志郎

unread,
Feb 20, 2011, 5:21:11 AM2/20/11
to lokk...@googlegroups.com
無理矢理あわせてみましたが、どう考えてもdm-ferret-adapterを使った
方がいいですね。。。


八木 都志郎



On 2011/02/20, at 15:46, Masaki Komagata wrote:

PGP.sig

八木 都志郎

unread,
Feb 20, 2011, 12:40:55 PM2/20/11
to lokk...@googlegroups.com
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

jarvi以外ではエラーが出るのでDataMapperを調べていましたが、
dm-ferret-adapterにはいろいろ問題がありました。。。

まずFerretの初期化オプションがレポジトリのパス以外指定できないので、
localeを設定して日本語の検索に対応させることができません。
そのため、正々堂々、日本語はヒットしません。潔いです。

https://github.com/yagitoshiro/dm-ferret-adapter

というわけで、pull requestしました。

それから、dm-is-searchableというdmのプラグインを使うのが正しい
dm-ferret-adapterの使用法らしいのですが、プラグイン側からEntryクラスを再オープンしても
is :searchableが正しく動作しない(この時点ではまだrespond_to? 'is-searchable'.to_sumが
falseを返す)ので、lokkaのトップのGemfileにgem 'dm-is-searchable'を追加してやる
必要があります。

八木 都志郎
yagit...@gmail.com

On 2011/02/20, at 15:46, Masaki Komagata wrote:

iEYEARECAAYFAk1hUicACgkQ2MEmCNA++KK9fQCfdbIVN9qqPw+TKXIg2Y58Ofwx
lJwAn14EhesbTiHKj0M2r+J1d3T4zZvN
=8RQM
-----END PGP SIGNATURE-----

yagitoshiro

unread,
Feb 21, 2011, 1:23:41 AM2/21/11
to lokka-ja
dm-ferret-adapterをちょこっと使ってみました。
とりあえず、Entryクラスからデータを取得してpage処理を入れているので、
これで大丈夫かと思います。

https://github.com/yagitoshiro/lokka-ferret/commit/b74dd01b92fb3ad977c2bcc76d95faf9ffc644d6

On 2月21日, 午前2:40, 八木 都志郎 <yagitosh...@gmail.com> wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> jarvi以外ではエラーが出るのでDataMapperを調べていましたが、
> dm-ferret-adapterにはいろいろ問題がありました。。。
>
> まずFerretの初期化オプションがレポジトリのパス以外指定できないので、
> localeを設定して日本語の検索に対応させることができません。
> そのため、正々堂々、日本語はヒットしません。潔いです。
>
> https://github.com/yagitoshiro/dm-ferret-adapter
>
> というわけで、pull requestしました。
>
> それから、dm-is-searchableというdmのプラグインを使うのが正しい
> dm-ferret-adapterの使用法らしいのですが、プラグイン側からEntryクラスを再オープンしても
> is :searchableが正しく動作しない(この時点ではまだrespond_to? 'is-searchable'.to_sumが
> falseを返す)ので、lokkaのトップのGemfileにgem 'dm-is-searchable'を追加してやる
> 必要があります。
>
> 八木 都志郎
> yagitosh...@gmail.com
>
> On 2011/02/20, at 15:46, Masaki Komagata wrote:
>
>
>
>
>
>
>
>
>
> > Yahoo! API使ったらエラーがでましたー
>
> >http://gyazo.com/a13f51422da6668c773be82002c17aed.png
>
> > 2011年2月19日22:00 八木 都志郎 <yagitosh...@gmail.com>:
> >> -----BEGIN PGP SIGNED MESSAGE-----
> >> Hash: SHA1
>
> >> 親愛なる皆様
>
> >> というわけで、全文検索を作成しました。
> >>https://github.com/yagitoshiro/lokka-ferret
>
> >> *メールはどうなった?という質問は受け付けません。
>
> >> 仕様としては、日本語に対応したアナライザとかトークナイザを作って動かすと
> >> 形態素解析のための仕組みがサーバ側にインストールされている必要があるので、
> >> デフォルトの半角スペースでトークンに切り分けるやり方でインデックスを作成
> >> しておいて、MeCabまたはYahoo! Japanの形態素解析を管理画面で選択し、
> >> 毎度呼び出して検索対象のテキストと検索語を分かち書きに変換しています。
>
> >> 大文字/小文字とかの表記揺れはFerretで解消してくれますが、さすがに全角数字と
> >> 半角数字のようなものは対応してくれないので、インデックス化するタイミングと
> >> 検索文字を解析するタイミングで半角文字と全角文字を統一化する関数を通過させるようにしました。
>
> >> いくつか問題もありまして:
>
> >> ・mecabはGemfileで入れるとhomebrewなMacの人は動作しない(ruby-mecabの問題)
> >> (だからGemfileでコメントアウトにしてある)
> >> ・dm-ferret-adapterが動かなかった(バージョンの問題?深追いできてない)
>
> >> とかが解消されていません。
>
> >> それから、boostなんかの設定もまだありません。とりあえず作っちゃったんで、
> >> たぶん動くと思うんですが何かあったら教えてください。まあ、ご笑覧あれ。
>
> >> 八木 都志郎
> >> yagitosh...@gmail.com
>
> >> -----BEGIN PGP SIGNATURE-----
> >> Version: GnuPG v1.4.11 (Darwin)
>
> >> iEYEARECAAYFAk1fvt4ACgkQ2MEmCNA++KLClQCeLMISsKPDNq9hu7FTaDbNcQDN
> >> vxEAnR9neczyMd4KE5LDmVqlIp/bEuiX
> >> =kam8
> >> -----END PGP SIGNATURE-----
>
> >> --
> >> このメールは Google グループのグループ「lokka-ja」の登録者に送られています。
> >> このグループに投稿するには、lokk...@googlegroups.com にメールを送信してください。
> >> このグループから退会するには、lokka-ja+u...@googlegroups.com にメールを送信してください。
> >> 詳細については、http://groups.google.com/group/lokka-ja?hl=jaからこのグループにアクセスしてください。
>
> > --
> > --------------------------------------------------------------------------- -------
> >  Masaki Komagata <komag...@gmail.com>
>
> >  ブログ:http://docs.komagata.org/
> >  FJORD, LLC:http://fjord.jp/
> >  CMS for Cloud:http://lokka.org/
> >  開発依頼コミュニティ:http://help-me-hackers.com/
> >  何作ってる人?:http://makesthis.com/
> > --------------------------------------------------------------------------- -------
>
> > --
> > このメールは Google グループのグループ「lokka-ja」の登録者に送られています。
> > このグループに投稿するには、lokk...@googlegroups.com にメールを送信してください。
> > このグループから退会するには、lokka-ja+u...@googlegroups.com にメールを送信してください。
> > 詳細については、http://groups.google.com/group/lokka-ja?hl=jaからこのグループにアクセスしてください。
>
Reply all
Reply to author
Forward
0 new messages