・・・こんな感じで一番上の引き出しは大変なことになっていくのである。Luceneの全文検索インデックスも使い方によっては容易に混乱状態を作り出してしまう。Solrを使えばスキーマが管理できる。Solrについては別の機会に書きたい)。設計したシステムでは、ヘテロな文書を混在させるのは意図して行ったことであり、正しい使い方で、また、しばしば行われている。データベースにある構造化データと、HTMLやPDFのような非構造化データを横断的に検索したい場合、ひとつのインデックスにすべての文書を登録するが、種別が異なる文書では属性を統一できなかったりする。フィールドの値ではなく、フィールドそのもので検索するこのような時、「フィールドの値ではなく、フィールドそのもので検索するにはどうすればいいか」という要件が出される場面に遭遇する。「住所」というフィールドがある文書はすべてその値に関わらず検索したいとしよう。簡単に思いつくのは、すべての文書タイプをきちんと整理し、同じ属性名からなる文書に同一の文書タイプを割り振って、その文書タイプもまた文書の属性として登録する方法である。すれば、文書タイプフィールドに対する検索に置き換えることができる。似たような方法として、文書が持つ属性名のリストを属性として登録してもよい。すれば「属性名リスト」フィールドに対する属性名の検索で当初の目的が達成できる。このような属性名検索のために新しいフィールドを設けるやり方をとらなくてもTermDocsを使えば特定のフィールドを持つ文書を見つけることができる、という方法が少し前のメーリングリストで流れていた。TermDocsはseek()メソッドにTerm(フィールドと単語の組み合わせ)を与えると、それ以降、next()がtrueを返す間は文書とその文書に含まれる当該Termの数のペアを返すEnumeratorのインタフェースである。TermDocsのインスタンスはIndexReader.termDocs()で取得できる。これで返されたTermDocsのseek()に、検索したい属性名と空文字列のTermを渡す。空文字列を渡すところがコツでこれにより当該属性を持つすべての文書が列挙できる・・・というのだが本当だろうか。以下はサンプルプログラムである。異種文書が混在登録されているインデックスから、「住所」フィールドを持つ文書を表示しようとしている。doc;}}}しかし、残念ながらこのプログラムは希望したとおりには動かない。確認したところ、やはりTermDocsではなくTermEnumを使用しなければならないということであった。TermEnumはインデックスから指定したTerm「以降」をすべて列挙するEnumerator型の抽象クラスで、IndexReader.terms()にTermの引数を渡すことで取得できる。このとき、すべてのTermを列挙するためにTermのフィールド値として空文字列を指定する。先ほどのサンプルプログラムをTermEnumを使うようにして書き換えると、次のようになる。);}reader.close();そして以下が実行例である。当該フィールドのすべての単語が列挙されているのがわかる。これとTermDocsを組み合わせてループさせればTermを含む文書を列挙できるが、同じ文書を重複して列挙しない工夫がいるのと、やはりTermEnumを使ってすべてのTermを列挙してしまうループがあるという点で、当初目的である「『住所』というフィールドがある文書はすべてその値に関わらず検索したい」を達成するには、単純に文書の種別などを登録したフィールドを持たせる、というのが無難であろう。話を最初の「一番上の引き出し」に戻すと、考え方を変えればこの領域は私の仕事場の整理空間上の「遊び」の役割を果たしているともいえるのではないか。上の引き出しがなかったら、これらの小物たちはどこに置かれるのだろう。机の上やプリンタの上、フタを閉じられたノートPCの上などに置かれ、引き出しの中以上の混乱を引き起こすのに違いない。考えて一番上の引き出しの混乱状態を納得し、かくして片付けられないまま歳を越すのであった。最近、「プロとして恥ずかしくない何々の大原則」という本が売れているようである。「何々」には、「Illustrator」や「Photoshop」、「スタイルシート」などが入る。ためしにamazonの検索に「プロとして恥ずかしくない」と入れると、ずらっと出てくる。シリーズ化しているようだ。「リストマニア!」という欄には「プロ恥シリーズ」というリンクまでできていた。「プロ恥」という略語ができるくらい流行っているのか?しかし、「プロ」と「恥」という、本来およそ隣り合ってはいけない用語が連続して登場するタイトルの本が売れているとは、どういうことだろう。彼らはその道のプロとして仕事をしている。家庭や会社の人間関係に世間並みの悩みもあるが、なんとか日々の生活を営んでいる。仕事もそれなりに忙しい。2006年の日本において高望みさえしなければ、「これでよしとしようか」そんな感情なのであった。そんなある日、仕事と仕事の谷間にちょっとした不安感が彼らを襲うのであった。「先日納品したあの仕事、プロとして恥ずかしかったかもしれない」。