TUTORIAL

08. その他のサンプルデータ紹介

このページの項目

KandaSearchでは、検索エンジンの機能の評価・検証を容易に進められるようにするため、livedoorニュースコーパスをはじめ、いくつかのコンフィグとそれに対応するデータを拡張機能ライブラリーで配布しています。

ご利用にあたっては、以下の流れで操作を行ってください。

  1. プロジェクトを作成します。(すでにプロジェクトが存在する場合は省略できます)
  2. 画面上部の「拡張機能ライブラリー(ジグソーパズルの形)」アイコンをクリックし、表示された拡張機能ライブラリーからコンフィグとデータをプロジェクトに追加します。選択時はApache Solrのバージョンに、追加時は追加先プロジェクトにご注意ください。
  3. プロジェクトビューの「拡張機能」にて、追加したコンフィグやデータをパソコンにダウンロードします。
  4. プロジェクトビューの「オーバービュー」から、インスタンスを作成します。インスタンスには、無償で利用できるコミュニティプランをご利用ください。既存のインスタンを利用する場合は新規作成は不要です。
  5. インスタンスビューの「コレクション」にて、ダウンロードしたコンフィグを使ってコレクションを追加します。
  6. インスタンスビューの「オーバービュー」の「ドキュメントを登録する」にてコレクションを選択し、データをアップロードしてドキュメントの登録(インデクシング)を行います。

それでは、各コンフィグとデータの特徴について説明します。
なお、Apache Solrのバージョンアップなどにより、ご紹介しているコンフィグやデータの内容が異なる場合があります。

EC

一般的なECサイトで取り扱う商品情報をスキーマ構造としたコンフィグとデータです。

EC コンフィグ(Solr 9用)

EC データ

managed-schema.xmlには以下のようなフィールドが定義されています。

<uniqueKey>id</uniqueKey>
 <field name="id"                   type="string" indexed="true" stored="true" required="true"  multiValued="false" />
  <field name="productCode"          type="string" indexed="true" stored="true" required="false" multiValued="false" />
  <field name="productName"          type="text_ja" indexed="true" stored="true" required="false" multiValued="false" />
  <field name="productName_2g"       type="text_2g" indexed="true" stored="true" required="false" multiValued="false" />
  <field name="productNameKana"      type="text_2g" indexed="true" stored="true" required="false" multiValued="false" />
  <field name="promptForImage"       type="string" indexed="true" stored="true" required="false" multiValued="false" />
  <field name="image"                type="string" indexed="true" stored="true" required="false" multiValued="false" />
  <field name="price"                type="plong"  indexed="true" stored="true" required="false" multiValued="false" />
  <field name="taxKbn"               type="boolean" indexed="true" stored="true" required="false" multiValued="false" />
  <field name="makerName"            type="text_ja" indexed="true" stored="true" required="false" multiValued="false" />
  <field name="makerName_2g"         type="text_2g" indexed="true" stored="true" required="false" multiValued="false" />
  <field name="makerNameKana"        type="text_2g" indexed="true" stored="true" required="false" multiValued="false" />
  <field name="makerProduCode"       type="string" indexed="true" stored="true" required="false" multiValued="false" />
  <field name="categoryL"            type="text_ja" indexed="true" stored="true" required="false" multiValued="false" />
  <field name="categoryL_2g"         type="text_2g" indexed="true" stored="true" required="false" multiValued="false" />
  <field name="categoryM"            type="text_ja" indexed="true" stored="true" required="false" multiValued="false" />
  <field name="categoryM_2g"         type="text_2g" indexed="true" stored="true" required="false" multiValued="false" />
  <field name="categoryS"            type="text_ja" indexed="true" stored="true" required="false" multiValued="false" />
  <field name="categoryS_2g"         type="text_2g" indexed="true" stored="true" required="false" multiValued="false" />
  <field name="categoryFacetInfo"    type="string" indexed="true" stored="true" required="false" multiValued="false" />
  <field name="stock"                type="plong"  indexed="true" stored="true" required="false" multiValued="false" />
  <field name="size"                 type="string" indexed="true" stored="true" required="false" multiValued="false" />
  <field name="weight"               type="string" indexed="true" stored="true" required="false" multiValued="false" />
  <field name="unitName"             type="string" indexed="true" stored="true" required="false" multiValued="false" />
  <field name="salesUnit"            type="string" indexed="true" stored="true" required="false" multiValued="false" />
  <field name="productInfo"          type="text_ja" indexed="true" stored="true" required="false" multiValued="true"  />
  <field name="productInfo_2g"       type="text_2g" indexed="true" stored="true" required="false" multiValued="true"  />
  <field name="standardDeliveryDate" type="string" indexed="true" stored="true" required="false" multiValued="false" />
  <field name="campaignFlg"          type="string" indexed="true" stored="true" required="false" multiValued="false" />
  <field name="campaignStart"        type="string" indexed="true" stored="true" required="false" multiValued="false" />
  <field name="campaignEnd"          type="string" indexed="true" stored="true" required="false" multiValued="false" />
  <field name="campaignPrice"        type="plong"  indexed="true" stored="true" required="false" multiValued="false" />
  <field name="dateSince"            type="pdate"  indexed="true" stored="true"/>

このコンフィグとデータの主な特徴は次の通りです。

  • ECサイトの商品情報です。
  • <analyzer />子要素を持つフィールド型による「文字の正規化」「単語分割」「トークンのフィルタリング」「類義語展開」が設定されています。
  • デフォルトでハイライト機能が設定されています。
  • デフォルトでファセット機能が設定されています。
  • デフォルトでクエリサジェスチョン機能が設定されています。
  • imageフィールドに、生成AIで作成した画像へのリンクが登録されています。

tutorial-jp-085003

公共施設の位置情報(さいたま市)

さいたま市の公共施設の施設名、所在地、緯度、経度などをスキーマ構造としたコンフィグとデータです。ファセットの機能や地理検索機能を試すために最適なコンフィグとデータです。

公共施設の位置情報 コンフィグ(Solr 9用)

公共施設の位置情報 データ

managed-schema.xmlには以下のようなフィールドが定義されています。

<uniqueKey>id</uniqueKey>
<field name="_version_" type="plong" indexed="false" stored="false"/>
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false"/>
<field name="category" type="string" indexed="true" stored="true" multiValued="false"/>
<field name="name" type="text_ja" indexed="true" stored="true"/>
<field name="name_2g" type="text_2g" indexed="true" stored="true"/>
<field name="name_forward" type="text_forward" indexed="true" stored="true"/>
<field name="name_backward" type="text_backward" indexed="true" stored="true"/>
<field name="hierarchy" type="pathhie" indexed="true" stored="true" omitNorms="true" multiValued="false"/>
<field name="address" type="text_ja" indexed="true" stored="true"/>
<field name="address_2g" type="text_2g" indexed="true" stored="true"/>
<field name="location" type="location" indexed="true" stored="true" multiValued="false"/>

このコンフィグとデータの主な特徴は次の通りです。

  • さいたま市の公共施設の一覧情報です。
  • デフォルトでハイライト機能が設定されています。
  • デフォルトでファセット機能が設定されています。
  • デフォルトでクエリサジェスチョン機能が設定されています。
  • 前方一致/後方一致の検索のための設定がされています。
  • 公共施設には緯度経度データが含まれていますので地理検索(空間検索)ができます。

地理検索について少し掘り下げてみましょう。

地理検索とは、検索対象文書として建物や施設を扱う際、緯度経度情報をインデクシングすることで、施設を検索する際に地図上の位置でフィルタリングしたり、ある特定の場所から近い順に検索結果を表示したりする等を可能にする検索です。

ここでは、「さいたま市役所の半径1km以内にある公共施設を近い順に検索する」を例に、地理検索を行ってみます。
最初に、インスタンスビューの「検索」より、以下のパラーメータを指定して、さいたま市役所の緯度・経度を取得します。

  • キーワード欄 市役所
  • コレクション コレクション追加時に指定したコレクション名(ここではgeospatial)
  • リクエストハンドラ(qt) /select
  • タイトル(記事表題等)フィールド name
  • ボディ(記事本文等)フィールド location
  • デフォルトフィールド(fq) name

tutorial-jp-085006

さいたま市役所の緯度経度が表示されますので、この情報を使って、以下のパラメータで検索を行います。

  • キーワード欄 指定しない(全件検索)
  • コレクション コレクション追加時に指定したコレクション名(ここではgeospatial)
  • リクエストハンドラ(qt) /spatial
  • タイトル(記事表題等)フィールド name
  • ボディ(記事本文等)フィールド location
  • 任意のパラメーター pt=35.861648,139.645496

すると以下のように、さいたま市役所の付近にある公共施設が、市役所から近い順に表示されます。

tutorial-jp-085007

ブラウザの別タブでGoogle Mapへアクセスし、検索画面に表示された緯度・経度を使って検索し、施設の場所を表示してみましょう。

例) 消防局庁舎・浦和消防署の場合 35.862001,139.646234

tutorial-jp-085008

ここで利用したコンフィグファイルの solrconfig.xml には、地理検索に必要な次のパラメータがデフォルトで指定されています。

  • spatial=true 地理検索を実行
  • fq={!geofilt} ptからの距離で検索
  • sort=geodist() asc ptから近い順にソート
  • sfield=location 緯度・経度フィールド名
  • d=1 半径1km以内

インスタンスビューの「コンフィグ」にて、コレクション(ここでは geospatial) を指定して、solrconfig.xml の内容を確認しましょう。
上記のパラメータは、solrconfig.xml には次のように定義されています。

<requestHandler name="/spatial" class="solr.SearchHandler">
   <lst name="defaults">
     :
     <str name="spatial">true</str>
     <str name="fq">{!geofilt}</str>
     <str name="sort">geodist() asc</str>
     <str name="sfield">location</str>
     <int name="d">1</int>
     :
   </lst>
   :
 </requestHandler>

ここまでが地理検索についての説明です。

なお、このコンフィグの managed-schema.xml には、以下のようなフィールドが定義されています。

<uniqueKey>id</uniqueKey>
<field name="_version_" type="plong" indexed="false" stored="false"/>
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false"/>
<field name="category" type="string" indexed="true" stored="true" multiValued="false"/>
<field name="name" type="text_ja" indexed="true" stored="true"/>
<field name="name_2g" type="text_2g" indexed="true" stored="true"/>
<field name="name_forward" type="text_forward" indexed="true" stored="true"/>
<field name="name_backward" type="text_backward" indexed="true" stored="true"/>
<field name="hierarchy" type="pathhie" indexed="true" stored="true" omitNorms="true" multiValued="false"/>
<field name="address" type="text_ja" indexed="true" stored="true"/>
<field name="address_2g" type="text_2g" indexed="true" stored="true"/>
<field name="location" type="location" indexed="true" stored="true" multiValued="false"/>

子育て施設(千葉県)

千葉県の子育て施設一覧(認可保育所)のオープンデータをもとに、施設の市町村名、施設名、住所などをスキーマ構造としたコンフィグとデータです。所在市町村や利用曜日などによる絞り込みのファセット機能を試すために最適なコンフィグとデータです。

子育て施設 コンフィグ(Solr 9用)

子育て施設 データ

managed-schema.xmlには以下のようなフィールドが定義されています。(コンフィグのバージョンにより、以下とは異なる場合があります)

<uniqueKey>id</uniqueKey>
<field name="prefecturesCode"            type="string"  indexed="true" stored="true" required="false"  multiValued="false" />
<field name="id"                         type="string"  indexed="true" stored="true" required="true"   multiValued="false" />
<field name="prefecturesName"            type="string"  indexed="true" stored="true" required="false"  multiValued="false" />
<field name="cityName"                   type="string"  indexed="true" stored="true" required="false"  multiValued="false" />
<field name="childcareCenterName"        type="text_ja" indexed="true" stored="true" required="false"  multiValued="false" />
<field name="childcareCenterNameKana"    type="text_ja" indexed="true" stored="true" required="false"  multiValued="false" />
<field name="childcareCenterKbn"         type="string"  indexed="true" stored="true" required="false"  multiValued="false" />
<field name="address1"                   type="text_ja" indexed="true" stored="true" required="false"  multiValued="false" />
<field name="address2"                   type="text_ja" indexed="true" stored="true" required="false"  multiValued="false" />
<field name="latitude"                   type="string"  indexed="true" stored="true" required="false"  multiValued="false" />
<field name="longitude"                  type="string"  indexed="true" stored="true" required="false"  multiValued="false" />
<field name="access"                     type="text_ja" indexed="true" stored="true" required="false"  multiValued="false" />
<field name="parkingInfo"                type="text_ja" indexed="true" stored="true" required="false"  multiValued="true" />
<field name="parkingFlg"                 type="string"  indexed="true" stored="true" required="false"  multiValued="false" />
<field name="telNo"                      type="string"  indexed="true" stored="true" required="false"  multiValued="false" />
<field name="telExNo"                    type="string"  indexed="true" stored="true" required="false"  multiValued="false" />
<field name="faxNo"                      type="string"  indexed="true" stored="true" required="false"  multiValued="false" />
<field name="corpNo"                     type="string"  indexed="true" stored="true" required="false"  multiValued="false" />
<field name="groupName"                  type="text_ja" indexed="true" stored="true" required="false"  multiValued="false" />
<field name="authDate"                   type="string"  indexed="true" stored="true" required="false"  multiValued="false" />
<field name="capacity"                   type="string"  indexed="true" stored="true" required="false"  multiValued="false" />
<field name="targetAge"                  type="string"  indexed="true" stored="true" required="false"  multiValued="false" />
<field name="availDate"                  type="string"  indexed="true" stored="true" required="false"  multiValued="false" />
<field name="monFlg"                     type="string"  indexed="true" stored="true" required="false"  multiValued="false" />
<field name="tueFlg"                     type="string"  indexed="true" stored="true" required="false"  multiValued="false" />
<field name="wedFlg"                     type="string"  indexed="true" stored="true" required="false"  multiValued="false" />
<field name="thuFlg"                     type="string"  indexed="true" stored="true" required="false"  multiValued="false" />
<field name="friFlg"                     type="string"  indexed="true" stored="true" required="false"  multiValued="false" />
<field name="satFlg"                     type="string"  indexed="true" stored="true" required="false"  multiValued="false" />
<field name="sunFlg"                     type="string"  indexed="true" stored="true" required="false"  multiValued="false" />
<field name="stTime"                     type="string"  indexed="true" stored="true" required="false"  multiValued="false" />
<field name="endTime"                    type="string"  indexed="true" stored="true" required="false"  multiValued="false" />
<field name="availDaytimeInfo"           type="text_ja" indexed="true" stored="true" required="false"  multiValued="true"  />
<field name="tempAccept"                 type="string"  indexed="true" stored="true" required="false"  multiValued="false" />
<field name="url"                        type="string"  indexed="true" stored="true" required="false"  multiValued="false" />
<field name="remarks"                    type="text_ja" indexed="true" stored="true" required="false"  multiValued="true"  />

このコンフィグとデータの主な特徴は次の通りです。

  • 千葉県の子育て施設一覧(認可保育所)です。
  • デフォルトでハイライト機能が設定されています。
  • デフォルトでファセット機能が設定されています。
  • デフォルトでクエリサジェスチョン機能が設定されています。

tutorial-jp-085011

以上、拡張機能ライブラリーで配布しているコンフィグとデータのご紹介でした。

お見積もり・詳細は KandaSearch チームに
お気軽にお問い合わせください。

お問い合わせ