構成検索フィールド

場合によっては、メタデータインデックスを修正または拡張する検索フィールドが関連する。例えば、フィールドを追加する(その後、検索可能またはデフォルトビューで使用可能)またはフィールドの内容を変更することは、メタデータから作成される(インデックス)。

インデックス全体のフィールド数およびタイプは、以下の位置で管理される:

次に、各アーキテクチャプラグインにおいて、ファイル内のメタデータコンテンツから新しいフィールドをどのように充填するかを定義することができます:

Lucene GeoNetworkで用いられている検索エンジンである.すべてのLucene構成はWEB-INF/config-lucene.xmlで定義されている.

検索フィールドの追加

インデックスフィールドは、アーキテクチャフォルダ上でアーキテクチャで定義される(例えば、WEB-INF/data/config/schema_plugins/iso 19139/index-field)。このファイルは、検索条件毎にメタデータレコード内の対応する要素を定義する。例えば、ISO 19139に記録されたタイトルにインデックスを付ける:

<xsl:for-each select="gmd:identificationInfo/gmd:MD_DataIdentification/
                       gmd:citation/gmd:CI_Citation/
                       gmd:title/gco:CharacterString">
    <Field name="mytitle" string="{string(.)}" store="true" index="true"/>
</xsl:for-each>

一般に、フィールドが検索のためにのみ使用され、検索結果に表示されるべきでない場合、store属性はfalseに設定されてもよい。

フィールドがインデックスに追加されると、ユーザは、異なるタイプの検索サービスにおいて、このフィールドを検索条件として使用してクエリを行うことができる。例えば、使用::

http://localhost:8080/geonetwork/srv/en/q?mytitle=africa

ユーザがこのフィールドをマーク化することを望む場合、config−lucene.xmlのタグ化部分に追加すべきである:

<tokenized>
  <Field name="mytitle"/>

ユーザが検索サービスの検索結果でフィールドを返すことを望む場合、フィールドは、Lucene構成のDumpFields部分に追加されるべきである:

<dumpFields>
  <field name="mytitle" tagName="mytitle"/>

ドキュメントとフィールドをアップグレードする

ドキュメントおよびフィールドの向上により、ディレクトリ管理者が特定のタイプのレコードを向上させるために、デフォルトのLuceneスコアをカスタマイズすることができます。

一般的な用例の1つは、ディレクトリがデータセットを集約するための系列を多く含む場合である。この系列を宣伝しないことは,これらの記録に重要な内容が含まれていても,その系列を“役に立たない”にする可能性がある.このような文書を向上させることは,系列をアップグレードし,エンドユーザを系列から関連記録(リレーションシップナビゲーション)に誘導することを可能にする.

この場合、以下の構成は、シーケンスおよびシーケンスにおける記録部分の副次的重要性を向上させることを可能にする。

<boostDocument name="org.fao.geonet.kernel.search.function.ImportantDocument">
  <Param name="fields" type="java.lang.String" value="type,parentUuid"/>
  <Param name="values" type="java.lang.String" value="series,NOTNULL"/>
  <Param name="boosts" type="java.lang.String" value=".2F,-.3F"/>
</boostDocument>

昇圧は正浮動小数点値または負浮動小数点値である。

エキスパートユーザは,ディレクトリの内容に応じてデフォルト検索行動スコアを変更するためにこの機能を使用しなければならない.それは特定の記録の過剰な宣伝を避けるために調整と実験が必要だ。テスト中、検索結果が記録または記録されていないときに異なるように見える場合、Boost計算におけるいくつかの内部フィールドを無視する必要がある場合があり、これらのフィールドは、現在のユーザに応じてスコアを変更する可能性がある。一例の構成:

<fieldBoosting>
  <Field name="_op0" boost="0.0F"/>
  <Field name="_op1" boost="0.0F"/>
  <Field name="_op2" boost="0.0F"/>
  <Field name="_dummy" boost="0.0F"/>
  <Field name="_isTemplate" boost="0.0F"/>
  <Field name="_owner" boost="0.0F"/>
</fieldBoosting>

検索結果を上げる

デフォルトの場合,Luceneは検索条件および対応する結果集合とインデックス内容からスコアを計算する.無条件検索の場合,Luceneはインデックス順にトップ文書を返す(他の文書よりも関連する文書は1つもないため).

スコア計算を変更するために,1つのBoost関数を定義することができる.ブースティング·クエリはクラスパスにロードする必要があります。例示的な拡張クラスが提供される。RecencyBoostingQueryは最近修正された文書を促進する:

<boostQuery name="org.fao.geonet.kernel.search.function.RecencyBoostingQuery">
  <Param name="multiplier" type="double" value="2.0"/>
  <Param name="maxDaysAgo" type="int" value="365"/>
  <Param name="dayField" type="java.lang.String" value="_changeDate"/>
</boostQuery>