フォーラム: 【移行しました】サポート (スレッド #38282)

特定の拡張子のファイルのみクロールしたい (2017-01-05 10:35 by masuda_mitsuo #79206)

以下のフォルダ内にある特定のファイル(例えばテキストファイル)のみクロールを行いたいのですが、「クロール対象とするパス」や「検索対象とするパス」に設定しても思うような動作にならないため、設定方法を教えてください。
C:\work\test\

※testフォルダ内には複数のフォルダがあり、それらフォルダにテキストファイルやそれ以外のファイルが多数あります。

以下のように設定したのですがうまくいきませんでした。
テストしたfessのバージョンは10.3.1となります。

【パス】
smb://testpc/test/

【クロール対象とするパス】
.*\.txt$
.*\.TXT$

【実行結果】
2017-01-05 09:43:48,631 [WebFsCrawler] INFO Target Path: smb://testpc/test/
2017-01-05 09:43:48,632 [WebFsCrawler] INFO Included Path: .*\.txt$
2017-01-05 09:43:48,632 [WebFsCrawler] INFO Included Path: .*\.TXT$
2017-01-05 09:43:58,667 [IndexUpdater] INFO Processing no docs (Doc:{access 5ms}, Mem:{used 38MB, heap 58MB, max 1GB})
2017-01-05 09:44:08,646 [IndexUpdater] INFO Processing no docs (Doc:{access 4ms}, Mem:{used 38MB, heap 58MB, max 1GB})
2017-01-05 09:44:18,645 [IndexUpdater] INFO Processing no docs (Doc:{access 3ms}, Mem:{used 38MB, heap 58MB, max 1GB})
2017-01-05 09:44:18,845 [WebFsCrawler] INFO [EXEC TIME] crawling time: 30537ms
2017-01-05 09:44:28,645 [IndexUpdater] INFO Processing no docs (Doc:{access 3ms}, Mem:{used 39MB, heap 58MB, max 1GB})
2017-01-05 09:44:28,645 [IndexUpdater] INFO [EXEC TIME] index update time: 36ms
2017-01-05 09:44:28,718 [main] INFO Finished Crawler
2017-01-05 09:44:28,807 [main] INFO [CRAWL INFO] CrawlerEndTime=2017-01-05T09:44:28.718+0900,WebFsCrawlExecTime=30537,CrawlerStatus=true,CrawlerStartTime=2017-01-05T09:43:48.134+0900,WebFsCrawlEndTime=2017-01-05T09:44:28.717+0900,WebFsIndexExecTime=36,WebFsIndexSize=0,CrawlerExecTime=40584,WebFsCrawlStartTime=2017-01-05T09:43:48.233+0900
2017-01-05 09:44:28,851 [main] INFO Disconnected to elasticsearch:localhost:9301
2017-01-05 09:44:29,142 [main] INFO Destroyed LaContainer.


過去スレッドの似たような質問では「検索対象とするパス」に設定すれば良いという回答がありましたので、以下のように設定をして試しました。
【パス】
smb://testpc/test/

【検索対象とするパス】
.*\.txt$
.*\.TXT$

この設定では、パスに設定したフォルダ内の全てのファイルをクロールし(fess-crawler.logで確認できます)、検索対象はテキストファイルのみという動きのため、
全てのファイルをクロールしていくため、時間が掛かります。
クロール自体を特定の拡張子のみ(例えばテキストファイルのみ)とする方法がありましたら教えてください。

メッセージ #79206 への返信×

Wiki文法は使えません
ログインしていません。投稿を区別するために投稿者のニックネームをつけてください(ニックネームの一意性は保証されません。全く別の人も同じ名前を利用することが可能ですので本人であることの特定には利用できません。本人であることを保証したい場合にはログインして投稿を行なってください)。 ログインする

Re: 特定の拡張子のファイルのみクロールしたい (2017-01-05 10:56 by shinsuke #79207)

> 【パス】
> smb://testpc/test/
>
> 【クロール対象とするパス】
> .*\.txt$
> .*\.TXT$

の場合は、クロール対象とするパスにマッチするものしか
クロールしません。Fessはクロール開始時にはパスの
smb://testpc/test/しかわからず、それ以外のパスに関する情報はなく、
クロール対象とするパスにsmb://testpc/test/がマッチしないので
クロールを終了します。

> 【パス】
> smb://testpc/test/
>
> 【検索対象とするパス】
> .*\.txt$
> .*\.TXT$

この場合はsmb://testpc/test/からクロールしていき、
配下にあるパスを次々クロールしていきます。
そして、検索対象とするパスにマッチするものだけを
インデックスしていきます。

Fessからすると、クロールして、アクセスするまでは
何が存在しているのか把握できない状態にあります。
ですので、クロール/検索対象とするパスを工夫する必要が
あるのですが、smbであれば

【クロール対象とするパス】
.*/$
.*\.txt$
.*\.TXT$

という感じにすればディレクトリをクロールしていけるかもしれません。
ベストアンサー #79206 への返信

メッセージ #79207 への返信×

Wiki文法は使えません
ログインしていません。投稿を区別するために投稿者のニックネームをつけてください(ニックネームの一意性は保証されません。全く別の人も同じ名前を利用することが可能ですので本人であることの特定には利用できません。本人であることを保証したい場合にはログインして投稿を行なってください)。 ログインする

Re: 特定の拡張子のファイルのみクロールしたい (2017-01-05 11:59 by masuda_mitsuo #79208)

回答ありがとうございました。
「クロール対象とするパス」「検索対象とするパス」について理解することができました。

教えていただいた通り、「クロール対象とするパス」で以下にように設定することで、対象パスにあるテキストファイルのみクロールする動きとなりました。
.*/$
.*\.txt$
.*\.TXT$

また以下のようにテキストファイルとエクセルファイルのクロールという設定も試し、設定通りの動きになることも確認できました。
.*/$
.*\.txt$
.*\.TXT$
.*\.xls$
.*\.XLS$
.*\.xlsx$
.*\.XLSX$

ありがとうございました。


[メッセージ #79207 への返信]
> > 【パス】
> > smb://testpc/test/
> >
> > 【クロール対象とするパス】
> > .*\.txt$
> > .*\.TXT$
>
> の場合は、クロール対象とするパスにマッチするものしか
> クロールしません。Fessはクロール開始時にはパスの
> smb://testpc/test/しかわからず、それ以外のパスに関する情報はなく、
> クロール対象とするパスにsmb://testpc/test/がマッチしないので
> クロールを終了します。
>
> > 【パス】
> > smb://testpc/test/
> >
> > 【検索対象とするパス】
> > .*\.txt$
> > .*\.TXT$
>
> この場合はsmb://testpc/test/からクロールしていき、
> 配下にあるパスを次々クロールしていきます。
> そして、検索対象とするパスにマッチするものだけを
> インデックスしていきます。
>
> Fessからすると、クロールして、アクセスするまでは
> 何が存在しているのか把握できない状態にあります。
> ですので、クロール/検索対象とするパスを工夫する必要が
> あるのですが、smbであれば
>
> 【クロール対象とするパス】
> .*/$
> .*\.txt$
> .*\.TXT$
>
> という感じにすればディレクトリをクロールしていけるかもしれません。
#79207 への返信

メッセージ #79208 への返信×

Wiki文法は使えません
ログインしていません。投稿を区別するために投稿者のニックネームをつけてください(ニックネームの一意性は保証されません。全く別の人も同じ名前を利用することが可能ですので本人であることの特定には利用できません。本人であることを保証したい場合にはログインして投稿を行なってください)。 ログインする