国語研究所の施設整備に伴い,関連のサービスを次の期間,停止します。
期間:2024年4月27日(土)9:00~2024年4月29日(月・祝)17:30
対象:Web用例データベース(複合動詞,サ変動詞,形容詞)・『ひまわり』&関連資料(ダウンロードもできません),FishWatchr & FishWatchr Miniなど
本ページは現在作成中です
このページでは,設定ファイルで記述できる項目のうち,検索機能関連の項目について解説します。ただし,この後の説明は,『ひまわり』や XML について,次のことを前提として書いています。
このあと説明するのは,次の#つの検索方法です。
まず,簡単な検索用データの作成方法で扱ったXMLデータと設定ファイルとの関係を見てみます。
<?xml version="1.0" encoding="utf-16" ?> <corpus> <simpledoc タイトル="蜘蛛の糸" 著者="芥川龍之介"> ある日の事でございます。御釈迦様は極楽の蓮池のふちを、独りでぶらぶら御歩き になっていらっしゃいました。 :(中略) </simpledoc> </corpus>
全文検索対象の要素は,index_cix 要素で指定します。config_simpledoc.xml を見てみましょう。config_simpledoc.xml をサクラエディタなどのテキストエディタで開いて,index_cix 要素を探してください。
<index_cix> <li name="simpledoc" label="本文" middle_name="sd" type="normal" field_name="キー" /> </index_cix>
li 要素の内容は,次のとおりです。
上記の例では,全部検索対象をひとつだけ指定しましたが,複数指定することもできます。例えば,本文と書誌情報がある場合を考えましょう。body 要素が本文,note 要素が書誌情報です。
<simpledoc タイトル="蜘蛛の糸" 著者="芥川龍之介"> <body> ある日の事でございます。御釈迦様は極楽の蓮池のふちを、独りでぶらぶら御歩きになっていらっしゃいました。池の中に咲いている蓮の花は、みんな玉のようにまっ白で、そのまん中にある金色の蕊からは、何とも云えない好い匂が、絶間なくあたりへ溢れて居ります。極楽は丁度朝なのでございましょう。 </body> <note> 底本:「芥川龍之介全集2」ちくま文庫、筑摩書房 1986(昭和61)年10月28日第1刷発行 1996(平成8)年7月15日第11刷発行 親本:筑摩全集類聚版芥川龍之介全集 1971(昭和46)年3月〜11月 </note> </simpledoc>
このようなデータに対して,本文だけ,書誌情報だけ,両方を全文検索するには,次のように,index_cix 要素内の li 要素を複数指定します。検索対象の選択は,『ひまわり』の選択メニューから行うことができます。
<index_cix> <li name="body" label="本文" middle_name="body" type="normal" field_name="キー" /> <li name="note" label="書誌情報" middle_name="note" type="normal" field_name="キー" /> <li name="simpledoc" label="全体" middle_name="sd" type="normal" field_name="キー" /> </index_cix>
(作成中)
『ひまわり』は,検索した要素内容をマークアップしているタグの属性を,検索結果として抽出することができます。例えば,「簡単な検索用データの作成方法 」では,検索された文字列の「著者」と「タイトル」を抽出しています。
まず,config_simpledoc.xml の中の field_setting 要素を見てください。次の部分です。
<field_setting> <li name="no" type="index" width="30" align="RIGHT" /> <li name="前文脈" type="preceding_context" element="_sys" attribute="_preceding_context" width="180" align="RIGHT" sort_direction="R" /> <li name="キー" type="key" element="_sys" attribute="_key" width="80" sort_order="1" /> <li name="後文脈" type="following_context" element="_sys" attribute="_following_context" width="160" sort_order="2" /> <li name="著者" type="argument" element="simpledoc" attribute="著者" width="80" /> <li name="タイトル" type="argument" element="simpledoc" attribute="タイトル" width="80" /> </field_setting>
li 要素の name 属性に注目してください。これを見てわかるとおり,field_setting 要素中の li 要素は,検索結果の各列(フィールド)の情報を表しています。ちなみに,li 要素の順序が,検索結果の列の表示順序を決定します。
li 要素の属性のうち,本題に関係する四つの属性を見ていきましょう。
まず,抽出する属性の変更ですが,上で述べたように,li 要素の element 属性と attribute 属性を変更することによって行います。
次に,抽出する属性を追加してみます。例として,「簡単な検索用データの作成方法」の simpledoc 要素に「作成日」属性をつけます。具体的な追加例を次に示します。
<simpledoc タイトル="蜘蛛の糸" 著者="芥川龍之介" 作成日="2005-01-16">
資料に対して,「作成日」属性を追加したら,config_simpledoc.xml の field_setting 要素には,次の li 要素を追加します。
<li name="作成日" type="argument" element="simpledoc" attribute="作成日" width="80" />
attribute 属性が「作成日」となっているのに注意してください。name 属性は,検索結果の列名になります。field_setting 要素中のどこに追加してもかまいませんが,すでに述べたように,検索結果の列の表示順に影響します。
説明の順序が逆になりますが,属性を抽出する要素は,設定が必要です。4.1節で使っている simpledoc 要素の場合,config_simpledoc.xml の index_eix 要素で次のように設定されています。
<index_eix> <li name="simpledoc" middle_name="sd" is_empty="false" top="false" isBrowsed="true" /> </index_eix>
それぞれの属性の意味は,次のとおりです。
『ひまわり』は,4.1のように属性を抽出するために,検索された文字列をマークアップしているタグを内部的に検索しています。 「簡単な検索用データの作成方法」では,simpledoc 要素の属性だけが検索結果として抽出されていました。
ここでは,属性を抽出する要素を指定する方法の例として,複数の要素の属性を抽出する方法を説明します。
具体的な状況として,複数の章からなる文書を考えてみます。例えば,次のような構造を持った文書です。新たに設定した要素は,「章」要素です。
<simpledoc タイトル="全文検索システムについて" 筆者="国語太郎"> <章 タイトル="第1章 はじめに"> この文章では,... について述べます。 : : </章> <章 タイトル="第2章 発表の手順"> 本発表の手順は,次のとおりです。 : : </章> </simpledoc>
ここで,第2章に含まれる「本発表」を検索したとします。config_simpledoc.xml の設定だと,simpledoc 要素の属性(「タイトル」属性と「著者」属性)しか,検索結果として抽出できません。どの章に含まれるかを知るには,「章」要素の「タイトル」属性を抽出する必要があります。
まず,抽出対象の属性を含んだ要素を設定ファイルに指定する方法を説明します。config_simpledoc.xml の index_eix 要素を見てください。
<index_eix> <li name="simpledoc" middle_name="sd" is_empty="false" top="false" isBrowsed="true" /> </index_eix>
index_eix 要素中の個々の li 要素で属性抽出対象の要素を指定しています。それぞれの属性の意味は,次のとおりです。
「章」要素を属性抽出対象の要素とするには,次の li 要素を index_eix 要素に追加してください。
<li name="章" middle_name="section" is_empty="false" top="false" />
li 要素の追加が終わったら,[ツール]→[インデックス生成]で索引を生成してください。ただし,すでに索引ファイルが作成されている場合は,生成を行う前に,索引ファイルを削除してください。索引ファイルは,corpora 要素中の li 要素の path 属性で指定された場所に作られます。例えば,次の設定の場合,Corpora/Simpledoc フォルダ中(Corpora フォルダ中の Simpledoc フォルダ)に作られます。なお,今回生成される索引ファイルは,middle_name 属性に「section」を指定していますので,corpus.section.eix となります。
<corpora name="simpledoc"> <li name="simpledoc" path="Corpora/Simpledoc/corpus"/> </corpora>
以上で,index_eix 要素のほうの準備は,完了です。後は,抽出する属性を表示するために,次のように field_setting 要素を修正してください。修正方法は,「抽出する属性を追加,変更するには」で説明したとおりです。
<li name="章のタイトル" type="argument" element="章" attribute="タイトル" width="80" />
ここでは,XML に関する用語のうち,「要素」,「タグ」,「属性」など,上記説明中で頻繁に使用されている用語について補足説明を行います。
&ref(): File not found: "himawari_glossary1.png" at page "全文検索システム『ひまわり』/設定ファイル作成の手引き2";
<li name="simpledoc" path="Corpora/Simpledoc/corpus" />