スキップしてメイン コンテンツに移動

全文検索エンジンのApache Solr 7.5のインストールする (Mac/Linux)

全文検索エンジンである、Apache Solrのインストールから起動するまでの話です。

ダウンロード

http://ftp.jaist.ac.jp/pub/apache/lucene/solr/7.5.0/

上のページから、「solr-7.5.0.tgz」をダウンロード。
ダウンロードが終わったら解凍します。

tar xzf solr-7.5.0.tgz

Solrの起動

解凍先のディレクトリに移動して、以下のコマンドを入力。

cd solr-7.5.0
./bin/solr start -e cloud

起動オプションを入力

対話式で、いくつか起動オプションを聞かれるので、答えていきます。
Solrであらかじめ用意されている、サンプルスキーマ / サンプルデータを使って、起動していきたいと思います。

  • 起動するノード数

デフォルト値を使用する為、そのままEnter

This interactive session will help you launch a SolrCloud cluster on your local workstation.
To begin, how many Solr nodes would you like to run in your local cluster? (specify 1-4 nodes) [2]:
  • 1つ目のノードの、ポート番号 (デフォルト値を使用)

デフォルト値を使用する為、そのままEnter

Ok, let's start up 2 Solr nodes for your example SolrCloud cluster.
Please enter the port for node1 [8983]:
  • 2つ目のノードの、ポート番号

デフォルト値を使用する為、そのままEnter

Please enter the port for node2 [7574]:
  • コレクション名

techproducts と入力して Enter

Now let's create a new collection for indexing documents in your 2-node cluster.
Please provide a name for your new collection: [gettingstarted] techproducts
  • インデックスの分割数

デフォルト値を使用する為、そのままEnter

How many shards would you like to split techproducts into? [2]
  • レプリカの数

デフォルト値を使用する為、そのままEnter

How many replicas per shard would you like to create? [2]
  • configSet

sample_techproducts_configsと入力して Enter

Please choose a configuration for the techproducts collection, available options are:
_default or sample_techproducts_configs [_default] sample_techproducts_configs

すべての起動オプションを入力すると、以下のメッセージが表示されて、Solrが起動します。

Enabling auto soft-commits with maxTime 3 secs using the Config API
POSTing request to Config API: http://localhost:8983/solr/techproducts/config{"set-property":{"updateHandler.autoSoftCommit.maxTime":"3000"}}
Successfully set-property updateHandler.autoSoftCommit.maxTime to 3000
SolrCloud example running, please visit: http://localhost:8983/solr

メッセージに表示されている、http://localhost:8983/solrの部分をブラウザに入力して、管理コンソールが開けば、起動成功です。

enter image description here

サンプルデータの投入

あらかじめ Solrが用意しているサンプルデータを投入します。

bin/post -c techproducts example/exampledocs/*

java -classpath /Users/teramotosatoshishi/Temp/solr-7.5.0/dist/solr-core-7.5.0.jar -Dauto=yes -Dc=techproducts -Ddata=files org.apache.solr.util.SimplePostTool example/exampledocs/books.csv example/exampledocs/books.json example/exampledocs/gb18030-example.xml example/exampledocs/hd.xml example/exampledocs/ipod_other.xml example/exampledocs/ipod_video.xml example/exampledocs/manufacturers.xml example/exampledocs/mem.xml example/exampledocs/money.xml example/exampledocs/monitor.xml example/exampledocs/monitor2.xml example/exampledocs/more_books.jsonl example/exampledocs/mp500.xml example/exampledocs/post.jar example/exampledocs/sample.html example/exampledocs/sd500.xml example/exampledocs/solr-word.pdf example/exampledocs/solr.xml example/exampledocs/test_utf8.sh example/exampledocs/utf8-example.xml example/exampledocs/vidcard.xml
SimplePostTool version 5.0.0
Posting files to [base] url http://localhost:8983/solr/techproducts/update...
Entering auto mode. File endings considered are xml,json,jsonl,csv,pdf,doc,docx,ppt,pptx,xls,xlsx,odt,odp,ods,ott,otp,ots,rtf,htm,html,txt,log
POSTing file books.csv (text/csv) to [base]
POSTing file books.json (application/json) to [base]/json/docs
POSTing file gb18030-example.xml (application/xml) to [base]
POSTing file hd.xml (application/xml) to [base]
POSTing file ipod_other.xml (application/xml) to [base]
POSTing file ipod_video.xml (application/xml) to [base]
POSTing file manufacturers.xml (application/xml) to [base]
POSTing file mem.xml (application/xml) to [base]
POSTing file money.xml (application/xml) to [base]
POSTing file monitor.xml (application/xml) to [base]
POSTing file monitor2.xml (application/xml) to [base]
POSTing file more_books.jsonl (application/json) to [base]/json/docs
POSTing file mp500.xml (application/xml) to [base]
POSTing file post.jar (application/octet-stream) to [base]/extract
POSTing file sample.html (text/html) to [base]/extract
POSTing file sd500.xml (application/xml) to [base]
POSTing file solr-word.pdf (application/pdf) to [base]/extract
POSTing file solr.xml (application/xml) to [base]
POSTing file test_utf8.sh (application/octet-stream) to [base]/extract
POSTing file utf8-example.xml (application/xml) to [base]
POSTing file vidcard.xml (application/xml) to [base]
21 files indexed.
COMMITting Solr index changes to http://localhost:8983/solr/techproducts/update...
Time spent: 0:00:06.648

検索

投入したサンプルデータに対し、検索を行います。

curl "http://localhost:8983/solr/techproducts/select?q=foundation&wt=xml&indent=true"

URLパラメータで検索条件を指定します。

q:検索文字列
wt:出力フォーマット (xml, jsonなど)
indent:出力結果にインデントを設定する場合は true

レスポンスのXMLは以下のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<response>
<lst name="responseHeader">
  <bool name="zkConnected">true</bool>
  <int name="status">0</int>
  <int name="QTime">24</int>
  <lst name="params">
    <str name="q">foundation</str>
    <str name="wt">xml</str>
    <str name="_">1541994275045</str>
  </lst>
</lst>
<result name="response" numFound="4" start="0" maxScore="2.671292">
  <doc>
    <str name="id">0553293354</str>
    <arr name="cat">
      <str>book</str>
    </arr>
    <str name="name">Foundation</str>
    <float name="price">7.99</float>
    <str name="price_c">7.99,USD</str>
    <bool name="inStock">true</bool>
    <str name="author">Isaac Asimov</str>
    <str name="author_s">Isaac Asimov</str>
    <str name="series_t">Foundation Novels</str>
    <int name="sequence_i">1</int>
    <str name="genre_s">scifi</str>
    <long name="_version_">1616883289396609024</long>
    <long name="price_c____l_ns">799</long></doc>
  <doc>
    <str name="id">UTF8TEST</str>
    <str name="name">Test with some UTF-8 encoded characters</str>
    <str name="manu">Apache Software Foundation</str>
    <arr name="cat">
      <str>software</str>
      <str>search</str>
    </arr>
    <arr name="features">
      <str>No accents here</str>
      <str>This is an e acute: é</str>
      <str>eaiou with circumflexes: êâîôû</str>
      <str>eaiou with umlauts: ëäïöü</str>
      <str>tag with escaped chars: &lt;nicetag/&gt;</str>
      <str>escaped ampersand: Bonnie &amp; Clyde</str>
      <str>Outside the BMP:𐌈 codepoint=10308, a circle with an x inside. UTF8=f0908c88 UTF16=d800 df08</str>
    </arr>
    <float name="price">0.0</float>
    <str name="price_c">0.0,USD</str>
    <bool name="inStock">true</bool>
    <long name="_version_">1616883291442380800</long>
    <long name="price_c____l_ns">0</long>
   </doc>
   ~ 中略 ~
</result>
</response>

Solrの停止

停止するには、以下のコマンドを入力します。

bin/solr stop -all

掃除

今回作成した、2つのノードを削除し、最初の状態に戻すには、以下のコマンドを入力します。

bin/solr stop -all ; rm -Rf example/cloud/

コメント

このブログの人気の投稿

axiosの使い方まとめ (GET/POST/例外処理)

axiosの使い方まとめ (GET/POST/例外処理)最近何かとよく使うJavaScriptでAJAX通信を行うaxiosについて、簡単に使い方をまとめました。GETリクエストをaxiosで送るまずはGETリクエストをaxiosで送る方法です。const res =await axios.get('/users') console.log(res.data)分割代入の記法を使うと、以下のようにも書けますconst{data}=await axios.get('/users') console.log(data)クエリパラメータ (URLパラメータ)を指定クエリパラメータを指定する方法は2つあります。1つ目は、axios.getに指定するURLに直接記述する方法です。axios.get('/user?id=123')2つめは、axios.getの第2引数に、オプション指定する方法です。axios.get('/user',{ params:{ id:123}})POSTリクエストをaxiosで送る次はPOSTリクエストをaxiosで送る方法です。JSON形式でPOSTするJSON形式でPOSTする場合は、axios.postの第2引数に、送信するデータをJavaScriptオブジェクトで指定します。const res =await axios.post('/user',{ id:123, name:'Yamada Tarou'})application/x-www-form-urlencoded形式でPOSTするapplication/x-www-form-urlencoded形式でPOSTする場合は、URLSearchParamsを使います。var params =newURLSearchParams() params.append('id',123) params.append('name','Yamada Tarou')const res =await axios.post('/user', params)スポンサーリンク axios でファイルをアップロードする画像などのファイルを、…

[VB, C#] Windows 8, Window 10 で ImeModeが制御できない問題を解決する

[VB, C#] Windows 8, Window 10 で ImeModeが制御できない問題を解決するタイトルの通りですが、Windows 8 以降では Windows Form アプリケーションで、コントロールの ImeMode に Katakana や KatakanaHalf を設定しても、カタカナになってくれません。なぜ ImeMode が効かないのか?Windows 8 以降、IME Mode の切り替えは、ユーザー単位で切り替わるようになった為、アプリから IME Mode 制御が出来ないようになりました。
(IME をON にした場合、常に ひらがな モードになます)※ Windows 7までは、IME Modeの切り替えはアプリ単位で行われていた為、問題なくアプリから IME制御が行えました。スポンサーリンク 対処方法Windows 8 以降、IMEの制御は、InputScope クラスの利用が推奨されています。
しかし、InputScope クラスは、WPF、Windows ストアアプリでしか使えない為、Windows Formアプリでは使用できません。
(Windows Form はもう使うな!という事でしょうか (涙) )結論としては、コントールパネルの設定で、IMEの制御をユーザ単位から アプリ単位に変更する事ができます。
これで、Windows Formアプリでも 従来通りIMEの制御を行う事が出来ます。おわりにこの方法だと、アプリをインストールする端末すべてに設定が必要となり、とっても面倒です。。。
しかし、今の所これしか方法がない状態です。
これからは Windows Formではなく、WPFや Windows ストアアプリで作れという事ですかね (^^;)

MailKitの使い方! エンコーディング指定や添付ファイをメールで送信する方法[C#/VB Tips]

MailKitの使い方! エンコーディング指定や添付ファイをメールで送信する方法[C#/VB Tips]MailKitを使ってメールを送るサンプルコードです。(C#)UTF8/iso-2022-jpのエンコーディング指定、GMail/YahooのSMTPサーバで送るなど、4つのサンプルコードでMailKitの使い方を紹介します。MailKitって何?2017年に.NET標準のSystem.Net.Mail.SmtpClientが廃止予定となり、Microsoftより今後はオープンソースライブラリである、MailKitに置き換えるとアナウンスがありました。既にSmtpClientは非推奨になっており、今後は廃止されていきます。現在、SmtpClientを使用したソースコードには、Visual StudioからMailKitを使うよう警告が出るようになっています。さっそく、MailKitを使ってメールを送信するサンプルコードを作っていきます。UTF8でメールを送信文字エンコーディングを、UTF8でメールを送信するサンプルコードです。
MailKitは、デフォルトの文字エンコーディングがUTF8なっている為、シンプルなコードでメールを送信する事ができます。var host ="<smtp server name>"; var port =25;// or 587using(var smtp =new MailKit.Net.Smtp.SmtpClient()){//SMTPサーバに接続する smtp.Connect(host, port, MailKit.Security.SecureSocketOptions.Auto);//認証が必要な場合は、以下のコメントを解除//smtp.Authenticate("<id>", "<password>");//送信するメールを作成する var mail =new MimeKit.MimeMessage(); var builder =new MimeKit.BodyBuilder(); mail.From.Add(new MimeKit.MailboxAddress("",&quo…