Solr入門(Solrを動かしてみよう！！)

# はじめに
Mars Flag Advent Calendar 2023 24日目担当の菅です。よろしくお願いします。

今回は、弊社マーズフラッグが検索を扱う会社であることから、検索に関するOSSであるsolrをローカル環境にたて、簡単な検索を行えるように、内容をまとめてみました。


# 環境
今回はmacOS Ventura バージョン13.6で実行
```bash
$ docker -v
Docker version 24.0.6, build ed223bc820
$ docker-compose -v
Docker Compose version 2.21.0
```

# 本編
## 1. Docker composeでSolrを立ててみよう！

```yaml:docker-compose.yml
version: '3'
services:
  solr:
    image: solr:9.4.0
    ports:
     - "8983:8983"
    volumes:
      - data:/var/solr
    command:
      # 
      - solr-precreate
      # 
      - gettingstarted
volumes:
  data:

```
上記、docker-compose.ymlを下記のコマンドで実行してみる
```bash:Dockerコンテナの起動
$docker-compose up -d
```

http://localhost:8983/solr/ にアクセスするとSolrが立ち上がっていることがわかる
![solr画面.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3528619/f2ffe71d-f8c6-06d1-bcf7-faf1c4c593d7.png)

尚、SolrのDockerコンテナを停止したい場合には、以下のコマンドを行う
```bash:Dockerコンテナの停止
$docker-compose down
```

## 2. 検索してみよう
### 2-a. 検索してみよう
検索データとして以下を用意
※Solrにデータを投入する関係上通常のJSONファイルとフォーマットが少し違うので注意
```bash: 検索データ
{
    "title": "株式会社マーズフラッグ",
    "description": "BEYOND EMOTION サーチを技術から感動へ。日本発、国内トップシェアのサーチプラットフォーマーとして、サーチテクノロジーをベースとしたWebサービスを、国内外の企業・官公庁に提供しています。",
    "body": "製品・サービス 課題解決 導入事例 サポート ニュース 会社情報 Privacy Policy お問い合わせ BEYOND EMOTION サーチを技術から感動へ ABOUT US 日本発、国内トップシェア、 サーチプラットフォーマーとして 株式会社マーズフラッグは、1998年に設立以降、サーチテクノロジーによって常に業界の先頭を切り拓いてきました。サーチテクノロジーをベースとした強力なWebサービスでお客様のサイト運営をサポートいたします。 会社情報     OUR SERVICES 日本で1番選ばれているサイト内検索  MARS FINDERは、Webサイトの能力を最大限に活用するためのサイト内検索サービスです。Webサイトに訪れたお客さまを、必要としている情報へ早く正確に導きます。マーズフラッグのサーチテクノロジーと豊富な機能、使いやすさをご評価いただき、現在、世界中で多くの企業・団体・官庁などでご利用いただいております。  国内シェアNo.1 * *株式会社富士キメラ総研「ソフトウェアビジネス新市場 2023年版」検索エンジン市場(SaaS) 2022年度より 製品詳細 導入事例 サイト内検索に連携するチャット型AI対話サービス  気軽に語り掛けることで、多様な学習データから的を得た アウトプットを導き出すチャット型AI対話サービスです。 分野を掘り下げた学習データによって専門的な質問にも対応し、 サイト内検索サービスにもシームレスに連携します。  製品詳細 製品検索プラットフォーム  Web制作の知識がなくても簡単スタート、運用は使い慣れたExcelで  製品詳細 導入事例 API連携クラウドサービス  MARS FLAGのテクノロジーを活用し、Webサイト構築を迅速・簡単に  製品詳細 検索窓おすすめ表示  ユーザビリティとCVR向上に特化した高機能サジェストサービス  製品詳細 Webサイト品質管理  リンク切れや画像抜けなどの問題点を把握・分析・スコア化し、Webサイトの品質向上に貢献します  製品詳細 次世代型DXソリューション  Webサイト訪問者一人ひとりが求める情報をワンホップで伝えます  製品詳細 OUR CLIENTS 導入事例のご紹介 導入インタビュー 株式会社JVCケンウッド 様 導入インタビュー 株式会社 日立製作所 様 導入インタビュー パナソニック株式会社 様 導入事例一覧 NEWS ニュース・お知らせ MARS Platformが銀行決済に対応 2023.11.01 マジカマジカルにIdeathon CAMBODIA 2023が紹介されました 2023.10.11 Ideathon CAMBODIA 2023 終了報告 2023.10.10 ニュース一覧 スポンサード パラトライアスロン 秦 由加子選手  株式会社マーズフラッグは、パラトライアスリート 秦 由加子選手を応援しています。  VIEW MORE TOP  ©2023. All Rights Reserved By MARS FLAG  当社のウェブサイトはCookieを使用しています。Cookieの設定は、いつでもご利用のブラウザの設定により変更いただけます。 このサイトを使用することにより、Cookieの使用に同意したものとみなされます。 プライバシーポリシー",
    "uri": "https://www.marsflag.com/ja/"
},
{
    "title": "サイト内検索 MARS FINDER - MARS FLAG",
    "description": "国内シェアNo.1のサイト内検索サービスを定額で。タグを貼るだけで設置完了。サポート体制も充実して安心。保守・監視や機器の導入が不要なクラウド型 サイト内検索 MARS FINDERが、Webマーケティングを強力にサポートします。",
    "body": "製品・サービス 課題解決 導入事例 サポート ニュース 会社情報 Privacy Policy お問い合わせ 国内シェアNo.1*の サイト内検索を定額で タグを貼るだけで設置完了。サポート体制も充実して安心。保守・監視や機器の導入が不要なクラウド型 サイト内検索サービス。 国内シェアNo.1 * *株式会社富士キメラ総研「ソフトウェアビジネス新市場 2023年版」検索エンジン市場(SaaS) 2022年度より 高いユーザビリティと充実した検索機能、 スマホ対応のサイト内検索クラウドサービス  「サイト内検索」は、目的の異なるサイト訪問者に対して、的確に情報提供するための重要な機能であると共に、膨大なWeb資産をシームレスに活用するための最善の手段です。サイト内でいかに速やかに、かつ正確に顧客の目的とする情報へ導くかがユーザからの評価を高めるための大きな鍵となります。 MARS FINDERは、Webサイトの能力を最大限に活用するためのサイト内検索サービスです。多彩な機能により企業とお客さまとの円滑なコミュニケーションをサポートします。  お問い合わせ サービスの特長 お客様のWebサイトに「サイト内検索 MARS FINDER」を今すぐ導入できる！ カスタマイズも自在！  オンラインでの手続きと簡単なタグ貼り付けだけで、高いユーザビリティと充実した検索機能を備えたMARS FINDERを、セルフサービスで完結！ ニーズに合わせてカスタマイズした検索サービスを、お客様のサイト上に今すぐ導入できます。   　　　　　　　 　　　　　　 　　　　　　 今すぐ利用する サイト内検索とは？  Webサイトの中をキーワードで検索する機能です。探している情報がどこにあるか分からない場合や、目的のページを早く表示したい場合などに便利です。 このように簡単に情報を検索できるサービスは、Webサイトのコンテンツ増加にともない欠かせないものになりました。  サイト内検索の重要性 INTERVIEW & OUR CLIENTS MARS FINDERが選ばれる理由 導入事例 ： 株式会社JVCケンウッド様 “安定した動作と検索結果の正確さ、それを実現する技術力の高さが魅力” インタビュー全文はこちら 導入事例 ： 日立製作所 様 “導入の決め手は、多言語対応とフレキシブルなデザイン設定” インタビュー全文はこちら  マーズフラッグのサーチテクノロジーと豊富な機能、使いやすさをご評価いただき、 現在、世界中で多くの企業・団体・官庁などでご利用いただいております。  MARS FINDERが選ばれる理由 導入事例一覧 FEATURES MARS FINDERの特長 ページを早く簡単に探せる 検索結果に対象ページのサムネイル画像が表示されるので、直感的にページの把握が可能です。入力補助や表記のゆらぎにも対応しています。 PDFファイル内の文字も検索対象 膨大なデータをPDF資料として保有、公開している官庁のWebサイトや、サポート情報や電子マニュアルを多数公開している多くの企業にもご活用いただけます。 豊富な検索機能 サーチプラットフォーマーのマーズフラッグだからできる高度なサーチテクノロジーにより、精度が高い検索機能を多数提供しています。 Google Analyticsと連携、Google Tag Managerでの利用にも対応 Google Analyticsと連携し、普段使い慣れたツールでサイト内検索の各種ログデータを、概要から詳細まで参照できます(GA4(Google Analytics4)、UA(ユニバーサルアナリティクス)、共に対応)。また、Google Tag Managerを利用することで、各種タグを一元管理できます。 MARS PlatformとAPI連携 サーチプラットフォーマーのマーズフラッグだからできる高度なテクノロジーをベースとした幅広い機能を、APIでの連携により、簡単に組み込むことができます。 Webマーケティングをサポートする多彩な機能 サイト訪問者がサイト内検索で求めている情報は何なのか、「見つけにくい情報」「足りない情報」を検索ログから分析することで、Webサイトの改善・最適化に活用できます。 インサイトの発掘 サイト訪問者の検索後の行動を把握することにより、より高い商品理解や離脱率改善、サイト内回遊率向上に繋がるポイントの発見、新たなコンテンツ開発やサイトリニューアルなどの施策に役立てることができます。 顧客とのエンゲージメント向上 顧客が探している情報が見つからないなど、顧客とのコミュニケーションミスマッチの発見は、顧客と良好な関係(エンゲージメント)を築く上で、重要なポイントです。 Worldwideで利用できる 積極的な海外市場への進出や、情報のグローバル化への取り組みを促進している企業様へ世界各国の消費者と企業をつなぐWebコミュニケーションツールとして貢献しています。国別に検索結果画面を用意しログを収集します。 簡単導入・メンテナンス不要・手間なし運用 検索窓のタグを貼るだけで設置完了。保守・監視や機器の購入が不要なクラウドサービスです。 きめ細やかなデザインが可能 お客様のWebサイトに検索結果画面を設置できるので、きめ細やかなデザインが可能になります。 ドメイン・SSLはそのまま お客様のWebサイトに検索結果画面を設置できるので、利用するためのサブドメインやSSLライセンスの取得は不要です。すでに使用しているドメイン・SSLを、そのままご利用いただけます。 安心のアフターサポート 導入後いつでもお問い合わせ窓口の利用が可能です。充実したアフターサポートで、導入後も安心です。 お支払いは月額制 ご利用になるプランによって料金が決まる月額制クラウドサービスです。 機能一覧 FAQ よくあるご質問 サービスの利用方法について教えてください。 検索対象コンテンツのページ数に制限はありますか？ FAQ一覧 TOP 製品・サービス サイト内検索 MARS FINDER  ©2023. All Rights Reserved By MARS FLAG  当社のウェブサイトはCookieを使用しています。Cookieの設定は、いつでもご利用のブラウザの設定により変更いただけます。 このサイトを使用することにより、Cookieの使用に同意したものとみなされます。 プライバシーポリシー",
    "uri": "https://www.marsflag.com/ja/services/marsfinder/"
},
{
    "title": "API連携クラウドサービス MARS Platform - MARS FLAG",
    "description": "サーチプラットフォーマー MARS FLAGのテクノロジーを包括的に活用できるクラウドサービスです。Webサイトを運営する方々やスマホアプリを開発する方々は、自社に重厚なシステムを構築することなく、バックエンド機能としてインターネットを通じたAPI連携により、多彩で高度な機能を迅速・簡単に組み込むことができます。",
    "body": "製品・サービス 課題解決 導入事例 サポート ニュース 会社情報 Privacy Policy お問い合わせ マーズフラッグのテクノロジーを 包括的に活用できるクラウドサービス サーチプラットフォーマーのテクノロジーをベースとした機能を、APIによる連携によりWebサイトやアプリケーションに簡単に組み込むことができます。 マーズフラッグのテクノロジーを活⽤し、Webサイト構築を迅速・簡単に  MARS Platformは、MARS FLAGのテクノロジーを包括的に活用できるクラウドサービスです。インターネットを通じて、Webサイトやアプリケーションのバックエンド機能として、MARS FLAGのテクノロジーを利用できます。自社に重厚なシステムを構築することなく、APIによる連携により、多彩で高度な機能を迅速・簡単に組み込むことができます。  お問い合わせ MARS PlatformのAPI群 APIとは？  API(Application Programming Interface)とは、アプリケーションやソフトウェアが互いに情報をやりとりするときの仕様です。新たなサービスを提供するとき、全てのシステムを開発しなくても、APIを使⽤することにより、すでに他で運⽤されている機能やサービスを利⽤することができます。これにより、システム開発に掛かる時間やコストを削減できるだけではなく、よりプロフェッショナルな機能をサービスに組み込むことが容易になります。  IN THIS CASE こんな時にMARS Platformを活⽤いただけます 01 Webページに「推定したラベルを埋め込む」ことで「自動でカテゴリ設定」したい 02 コンテンツの内容を「要約した」一覧ページを「自動で生成」したい 03 ニュースリリースの一覧ページを「自動で表示」したい 04 サイト内に記載されているコンテンツを表象する「キーワードトップ10位」を「自動タグ付け」して、マーケティングオートメーションツールからのレコメンド精度を高めたい。 05 いままで作成に手間がかかっていた「モバイルユーザ向けのUX」を「自動で実現」したい 活用事例 API MARS Platformが提供するAPI群(一部紹介) クローラーAPI クロール結果を多様なファイル形式にて出力 sitemap.xmlの生成に必要なデータの抽出 クロールにより到達可能なURL一覧の取得 404エラーリストの取得 データ連携API 自社で管理、運用する製品、商品、コンテンツデータのサーチエンジンへの投入 自社で管理、運用するサジェストデータのサーチエンジンへの投入 検索API 検索結果の取得 検索ログの取得 サジェストAPI サジェスト情報の取得 サジェストログの取得 ラベル推定API ラベル情報の取得 ラベル一覧の取得 文書要約API 要約結果の取得 感情極性(PN)判定API 入力された文章のネガティブ・ポジティブを判定 スクレイピングAPI 入力されたURLのコンテンツから本文中の全てのテキストやDOM構造を取得 カテゴライズAPI(α版) 入力されたURLのコンテンツをラベル推定し、カテゴリに分類  その他のAPIについては、お問い合わせください。  TOP 製品・サービス API連携クラウドサービス MARS Platform  ©2023. All Rights Reserved By MARS FLAG  当社のウェブサイトはCookieを使用しています。Cookieの設定は、いつでもご利用のブラウザの設定により変更いただけます。 このサイトを使用することにより、Cookieの使用に同意したものとみなされます。 プライバシーポリシー",
    "uri": "https://www.marsflag.com/ja/services/marsplatform/"
}

```

上記データをSolr上に投入してみる
※今回はUI上で実施
http://localhost:8983/solr/#/gettingstarted/documents にアクセスし、
「Document Type」→「JSON」、「Document(s)」に上記検索データを追加する。
この状態で、「Submit Document」ボタンをクリックする

成功の場合は下記画像の右側のようにStatusがsuccessが表示される
![検索データ投入.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3528619/6f14fcb6-0f86-72c7-c59f-572f25b49ddc.png)

### 2-b. 検索してみよう
http://localhost:8983/solr/#/gettingstarted/query にアクセスし、
「q」の欄を変更することで検索できる。
通常の指定方法は、{Filed名}:{検索語}となるので注意
```text:検索例
# titleに「サイト内検索」が含まれているものを検索
title:サイト内検索

# bodyに「MARS」が含まれているものを検索
body:MARS

# 全件取得
*:*
```
![検索画面.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3528619/b4cde804-5510-91d9-fb30-511325f20959.png)