<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">

  <channel>
    <title>検索 on @johtaniの日記 3rd</title>
    <link>https://blog.johtani.info/tags/%E6%A4%9C%E7%B4%A2/</link>
    <description>Recent content in 検索 on @johtaniの日記 3rd</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>ja</language>
    <lastBuildDate>Thu, 31 Oct 2024 13:12:49 +0000</lastBuildDate><atom:link href="https://blog.johtani.info/tags/%E6%A4%9C%E7%B4%A2/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>検索技術勉強会2024 Summerで司会しました</title>
      <link>https://blog.johtani.info/blog/2024/10/31/searchtechjp-2024-summer/</link>
      <pubDate>Thu, 31 Oct 2024 13:12:49 +0000</pubDate>
      
      <guid>https://blog.johtani.info/blog/2024/10/31/searchtechjp-2024-summer/</guid>
      <description>&lt;p&gt;どーも、johtaniです。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://search-tech.connpass.com/event/331560/&#34;&gt;Search Engineering Tech Talk 2024 Summer&lt;/a&gt;を10/10にビズリーチさんの新オフィスで開催し、また司会をしてきました。
今年2度目になります。
資料と録画をべ協会のページの資料のところにアップロードしてありますので、当日参加できなかった方、気になっている方は見ていただければと思います。&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;どーも、johtaniです。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://search-tech.connpass.com/event/331560/&#34;&gt;Search Engineering Tech Talk 2024 Summer&lt;/a&gt;を10/10にビズリーチさんの新オフィスで開催し、また司会をしてきました。
今年2度目になります。
資料と録画をべ協会のページの資料のところにアップロードしてありますので、当日参加できなかった方、気になっている方は見ていただければと思います。&lt;/p&gt;
&lt;!-- more --&gt;
&lt;p&gt;発表内容については資料などを見ていただくこととし、今回も運営周りでのメモを残しておこうかなと。
司会はあいかわらず緩い感じだったので、もう少しちゃんとやらないと。。。&lt;/p&gt;
&lt;h2 id=&#34;継続したいこと&#34;&gt;継続したいこと&lt;/h2&gt;
&lt;h3 id=&#34;スピーカーとslackでやりとり&#34;&gt;スピーカーとSlackでやりとり&lt;/h3&gt;
&lt;p&gt;前回同様に、スピーカーの方たちに初手の連絡は、&lt;a href=&#34;http://bit.ly/SpeakerSearchTechTalk&#34;&gt;スピーカー登録フォーム&lt;/a&gt;に記載していただいた連絡先に連絡を入れましたが、
その後は、search-tech-jpのSlackでやり取りをさせていただき、スムーズにやり取りができました。
スタッフとも共有しやすいので便利でした。
発表当日の連絡や、その後の動画の確認などもこちらが使えるのは楽ですね。&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;ja&#34; dir=&#34;ltr&#34;&gt;検索技術に関する情報交換を目的とした Slack を立ち上げました！こちらの招待リンクからご参加ください。 &lt;a href=&#34;https://t.co/Tca70vuMff&#34;&gt;https://t.co/Tca70vuMff&lt;/a&gt;&lt;/p&gt;&amp;mdash; takuya-a (@takuya_b) &lt;a href=&#34;https://x.com/takuya_b/status/1377219737457860610?ref_src=twsrc%5Etfw&#34;&gt;March 31, 2021&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.x.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;


&lt;h3 id=&#34;会場へのアクセスのスライドを用意&#34;&gt;会場へのアクセスのスライドを用意&lt;/h3&gt;
&lt;p&gt;会場提供をしていただいている方には少し負担になっているかもしれないですが、渋谷の新しいビルということもありスライドを用意してもらいました。
オフィス入り口は商用のテナントとは別の入り口だったりするので迷子になることも多いと思います。
私自身はスライドのおかげですんなり会場に到着できました。ほかの皆さんはどうだったんだろう？&lt;/p&gt;
&lt;h3 id=&#34;名札を印刷&#34;&gt;名札を印刷&lt;/h3&gt;
&lt;p&gt;今回も次のツールを使って名札を印刷しつつ、ネームホルダーを用意してみました。懇親会で首からぶら下げていただいたのでよかったかな？&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/MasayaAoyama/connpass-nametag-generator&#34;&gt;MasayaAoyama/connpass-nametag-generator： Connpass のイベント参加者の名札を生成するツール群&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;飲食提供をやめてみました&#34;&gt;飲食提供をやめてみました&lt;/h3&gt;
&lt;p&gt;会場での飲食自体はOKだったので、おなかがすいた人は食べながら聞いてもらうのもありにしてみました。
といっても、食事してる人はいなかったかも？懇親会にも結構な人が残っていただき大変盛り上がりました。
今後もこれでいいのかもな。&lt;/p&gt;
&lt;h2 id=&#34;改善点&#34;&gt;改善点&lt;/h2&gt;
&lt;h3 id=&#34;録音環境の改善&#34;&gt;録音環境の改善&lt;/h3&gt;
&lt;p&gt;録音したものを見ていただくとわかりますが、音がこもっています。
スピーカーの方にGoogle Meetで入って画面共有してもらいつつ録画し、私のノートPCのマイクだけをONにして録音してみました。
録画自体は会場のWi-fiをスピーカー限定で利用したので途切れたりすることもなくきれいに録画できていました。&lt;/p&gt;
&lt;p&gt;ただ、音に関してはノートPCのマイクだから＋圧縮されたりノイズキャンセル機能が動いていたりで少しこもった感じがしています。
会場のマイク経由での音はそれなりに拾えていますが、マイクなしでの声や拍手は入っていなかったりです。&lt;/p&gt;
&lt;p&gt;携帯できるマイクもあったので、次回は持って行って再チャレンジかな？
みんなどうしているんだろう？この辺のノウハウが足りないし、3か月に1度の開催なので身についてない気がする。&lt;/p&gt;
&lt;h3 id=&#34;summerfall&#34;&gt;Summer?Fall？&lt;/h3&gt;
&lt;p&gt;Summerという名前を付けてしまいましたが、当日は寒かったかもなぁ。。。&lt;/p&gt;
&lt;h2 id=&#34;そのほか&#34;&gt;そのほか&lt;/h2&gt;
&lt;h3 id=&#34;connpassのqrコード読み取りを活用&#34;&gt;connpassのQRコード読み取りを活用&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://help.connpass.com/organizers/event-admin#qr&#34;&gt;参加者の管理と受付 — connpassご利用ガイド ドキュメント&lt;/a&gt;にあるQRコードを利用した受付をしました。
私自身は受付をしてないので、スムーズだったかどうかは定かではないのですが、受付人数の確認がものすごく楽です。
名札を印刷しているのもあるので、参加者数は把握できるのですが、実際にどなたが来ていたのか？などがすぐにわかるのは大変便利ですね。
Connpassの開発者の方ありがとうございます！&lt;/p&gt;
&lt;h2 id=&#34;まとめ&#34;&gt;まとめ&lt;/h2&gt;
&lt;p&gt;話をしていただいたスピーカーの皆さん、参加していただいた参加者の皆さん、会場を提供していただいたビズリーチさん、準備で奔走してもらったスタッフの皆さん、ありがとうございました。
おかげさまで今回も楽しめました（&lt;a href=&#34;https://blog.johtani.info/blog/2019/02/26/start-search-engineering-tech-talk/&#34;&gt;自分が楽しむために開催してます&lt;/a&gt;）。
そのあと風邪をひいてしまったのでブログや録画の公開が遅くなってしまい申し訳なかったです。&lt;/p&gt;
&lt;p&gt;さて、次回も3か月後くらいに開催できるようにスピーカー探し頑張らないとな。
スピーカーおまちしております！（&lt;a href=&#34;http://bit.ly/SpeakerSearchTechTalk&#34;&gt;スピーカー登録フォーム&lt;/a&gt;）&lt;/p&gt;
</content:encoded>
    </item>
    
    <item>
      <title>検索技術勉強会2024 Springで司会しました</title>
      <link>https://blog.johtani.info/blog/2024/06/01/searchtechjp-2024-spring/</link>
      <pubDate>Sat, 01 Jun 2024 13:31:37 +0000</pubDate>
      
      <guid>https://blog.johtani.info/blog/2024/06/01/searchtechjp-2024-spring/</guid>
      <description>&lt;p&gt;どーも、johtaniです。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://search-tech.connpass.com/event/318126/&#34;&gt;Search Engineering Tech Talk 2024 Spring&lt;/a&gt;を5/31にLegalOn Technologiesさんの新オフィス（渋谷サクラステージ）で開催し、司会をしてきました。昨年末の12月に4年ぶりの復活開催から2回目（計6回目）となります。フリーランスになってからこういう場で司会をしたのは初めてかも？&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;どーも、johtaniです。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://search-tech.connpass.com/event/318126/&#34;&gt;Search Engineering Tech Talk 2024 Spring&lt;/a&gt;を5/31にLegalOn Technologiesさんの新オフィス（渋谷サクラステージ）で開催し、司会をしてきました。昨年末の12月に4年ぶりの復活開催から2回目（計6回目）となります。フリーランスになってからこういう場で司会をしたのは初めてかも？&lt;/p&gt;
&lt;!-- more --&gt;
&lt;p&gt;前回は諸事情で裏方スタッフとして手伝っていましたが、今回はオープニングと司会をやってきました。
ひさびさにオフラインで人前でしゃべったので、ちょっとグダグダ感が出てしまったかもですが、面白い話をいろいろ聞けて楽しかったです。&lt;/p&gt;
&lt;p&gt;今回（前回も含め）はいくつか新しい試みも行ったので自分用のメモとして記録しておこうかなと（セッションの感想などは参加者の皆さんにおまかせします！）。&lt;/p&gt;
&lt;h2 id=&#34;新しい試み&#34;&gt;新しい試み&lt;/h2&gt;
&lt;h3 id=&#34;スピーカーとの連絡方法&#34;&gt;スピーカーとの連絡方法&lt;/h3&gt;
&lt;p&gt;スピーカー登録については、知り合いに声をかけてみたり、勉強会のページに用意してある&lt;a href=&#34;http://bit.ly/SpeakerSearchTechTalk&#34;&gt;Googleフォーム&lt;/a&gt;で登録をしてもらっています。
こちらのGoogleフォームに登録されると、メールやTwitterでコンタクトをとり、今回の開催で日程が合うかどうかを調整しています。&lt;/p&gt;
&lt;p&gt;実際に登壇していただく形になったあとに、前回からはsearch-tech-jp（以下のツイートから参加可能なはず）のSlackでプライベートチャンネルを作って連絡をするようにしています。
個別に連絡するよりもスタッフの誰かが反応できるようになっているので便利になったかなと。&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;ja&#34; dir=&#34;ltr&#34;&gt;検索技術に関する情報交換を目的とした Slack を立ち上げました！こちらの招待リンクからご参加ください。 &lt;a href=&#34;https://t.co/Tca70vuMff&#34;&gt;https://t.co/Tca70vuMff&lt;/a&gt;&lt;/p&gt;&amp;mdash; takuya-a (@takuya_b) &lt;a href=&#34;https://x.com/takuya_b/status/1377219737457860610?ref_src=twsrc%5Etfw&#34;&gt;March 31, 2021&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.x.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;


&lt;h3 id=&#34;会場へのアクセススライドを用意してもらった&#34;&gt;会場へのアクセススライドを用意してもらった&lt;/h3&gt;
&lt;p&gt;新しいビルでかつ新しいオフィス（すごくかっこいいオフィスエントランスだった！）ということもあり、入り口がわかりにくいかも？という話が事前のスタッフ打ち合わせで出ました。
他社のブログに写真付きでオフィス受付ロビーへの案内を作られているものがあったのですが、さすがに流用するのもわるいですよね？ということになり、スタッフでLegalOn Technologiesの方にスライドを作成していただきました（&lt;a href=&#34;https://docs.google.com/presentation/d/1lpkYvu8Is_GT1j79BG_SQSm6i1S3KEjN0WFvQ9uXqRk/edit?usp=sharing&#34;&gt;案内スライド&lt;/a&gt;）。&lt;/p&gt;
&lt;p&gt;そのうち会社としてアクセスのわかりやすいページなどもできると思いますが、わかりにくい入り口などの場合はこういうのを用意すると便利かもなと。&lt;/p&gt;
&lt;p&gt;当日は何人かLegalOn Technologiesのかたに誘導役として経路に立っていただいたので、そちらもわかり安かったのではないかなと思っていますがどうでしょう？（感想聴くの忘れてた。。。）&lt;/p&gt;
&lt;h3 id=&#34;名札を印刷して持って行った&#34;&gt;名札を印刷して持って行った&lt;/h3&gt;
&lt;p&gt;懇親会で交流してもらいやすくするために次のリポジトリで公開されている名札生成ツールを利用させていただきました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/MasayaAoyama/connpass-nametag-generator&#34;&gt;MasayaAoyama/connpass-nametag-generator： Connpass のイベント参加者の名札を生成するツール群&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;できたものはこんな感じ（名札に入れた写真を撮り忘れた。。。）。&lt;/p&gt;
&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;ja&#34; dir=&#34;ltr&#34;&gt;さてと。便利なツールありがとうございます！&lt;a href=&#34;https://t.co/Q0r84v0ZDp&#34;&gt;https://t.co/Q0r84v0ZDp&lt;/a&gt; &lt;a href=&#34;https://t.co/IcSQRZtVf6&#34;&gt;pic.twitter.com/IcSQRZtVf6&lt;/a&gt;&lt;/p&gt;&amp;mdash; Jun Ohtani (@johtani) &lt;a href=&#34;https://x.com/johtani/status/1796393829286949206?ref_src=twsrc%5Etfw&#34;&gt;May 31, 2024&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&#34;https://platform.x.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;


&lt;p&gt;当日に印刷して裁断して持参しました。
アイコンが登録してあると見やすくていいですね。&lt;/p&gt;
&lt;p&gt;スタッフ、スピーカーについては参加者一覧には出てこなかったため、別途追加して印刷するところだけは次回以降も忘れないようにしないとかな。
（うまくやれば、Connpassの参加者一覧としてダウンロードできるCSVにスタッフやスピーカーも追加できたりするのかな？）&lt;/p&gt;
&lt;h3 id=&#34;ltもあり&#34;&gt;LTもあり&lt;/h3&gt;
&lt;p&gt;前回まではスピーカーに登録していただくのは25分のセッションのみとしていました。
ただ、これだと初めての方やちょっとしたこと（ちょっと困ってること、こんなこと試してみたよ）を話したい方にはハードルが高いかもしれないなと。あと、LTあればスピーカーするのにという声も見かけました。&lt;/p&gt;
&lt;p&gt;当日参加のLTではありませんが、スピーカー登録フォームにLT枠も設けてみました。
実際に今回はLTを2本用意していただくことができましたし、いろいろな話題も含められそうだなと。&lt;/p&gt;
&lt;p&gt;事前の調整などもあるので今後も当日飛び込みのLTの予定はないですが、LT枠への募集は行っていく予定です。&lt;/p&gt;
&lt;h3 id=&#34;懇親会が15h&#34;&gt;懇親会が1.5h&lt;/h3&gt;
&lt;p&gt;今回は開始時間を19時からとしたため、懇親会の時間を長くとることができました（ちょっと懇親会の準備に手間取ってしまいましたが）。
そのため、いつもよりもスピーカーや参加者の皆さんの間で話が弾んだんじゃないかな？と思っています。
どうだろう？&lt;/p&gt;
&lt;h2 id=&#34;改善点&#34;&gt;改善点&lt;/h2&gt;
&lt;p&gt;いくつか改善できるかも？という点もあるのでこちらもメモを。&lt;/p&gt;
&lt;h3 id=&#34;名札の配り方&#34;&gt;名札の配り方&lt;/h3&gt;
&lt;p&gt;オフィスに入るためにセキュリティゲート前に受付を用意し、記名と引き換えにQRコードを渡して会場まで来ていただき、会場の後ろの机に名札を広げておいて置く形にしました。&lt;/p&gt;
&lt;p&gt;印刷したあとで気づいたのですが、受付票にある番号も名札に印刷しておくと名札を受付で渡せたのかもしれないな？と思いました。
効率よく名札をつけてもらいつつ入ってもらうのにはどうするのがいいのかなぁ？
悩ましいところです。番号あったほうがいいのかな？&lt;/p&gt;
&lt;h3 id=&#34;スピーカーとのファーストコンタクト&#34;&gt;スピーカーとのファーストコンタクト&lt;/h3&gt;
&lt;p&gt;Googleフォームで入力してもらったX（旧Twitter）あてに連絡を入れようとして、フォローされていない方にDMが打てないことがありました。
連絡がつかないとしょうがないので、メンションをしたのですがそれでも返信がもらえずに連絡取れないという状況になっていたりします。&lt;/p&gt;
&lt;p&gt;メールアドレスのみにするか、search-tech-jpのSlackに登録してもらい、そのアカウントを記入していただくようにしてSlack上でDMをやり取りをしたほうがいいのかもしれないと考えているところです。&lt;/p&gt;
&lt;p&gt;事前にSlackに登録していただく必要が出てきてしまうとスピーカー登録のハードルが上がってしまわないかが心配ですが、連絡が取れないよりはいいのかなぁ？どうしたものか。&lt;/p&gt;
&lt;p&gt;とりあえず、GoogleフォームにSlackへの導線とSlackアカウントでもOKという記載をして試してみるのがいいのかもな。&lt;/p&gt;
&lt;h3 id=&#34;開始時間&#34;&gt;開始時間&lt;/h3&gt;
&lt;p&gt;19時開始となったために、キャンセルしてしまった方とかいるかどうか？というのはちょっと気になる所です。
スタッフのみんなにもセッションを聞いてもらいたいので、受付は基本的に勉強会開始のタイミングで閉じるようにしているので。
できれば遅いほうがいいなどの意見があるようだったら聞いてみたいけど、そういう人はいたのだろうか？
次回開催時にアンケートみたいなのをとるのがいいのかなぁ？&lt;/p&gt;
&lt;h2 id=&#34;まとめ&#34;&gt;まとめ&lt;/h2&gt;
&lt;p&gt;話をしていただいたスピーカーの皆さん、参加していただいた参加者の皆さん、会場やフードを提供していただいたLegalOn Technologiesさん、準備で奔走してもらったスタッフの皆さん、ありがとうございました。
おかげさまで今回も楽しめました（&lt;a href=&#34;https://blog.johtani.info/blog/2019/02/26/start-search-engineering-tech-talk/&#34;&gt;自分が楽しむために開催してます&lt;/a&gt;）。&lt;/p&gt;
&lt;p&gt;いくつかチャレンジしてみたこと、チャレンジしてみたいことまだまだありますが、次回の改善につなげられればいいなということでメモを残してみました。&lt;/p&gt;
&lt;p&gt;3ヶ月ごとに1度が目標なので、スピーカーや会場探しを次回に向けてがんばらないとなー。&lt;/p&gt;
&lt;p&gt;今後も定期的に開催したいので、&lt;a href=&#34;http://bit.ly/SpeakerSearchTechTalk&#34;&gt;スピーカー登録&lt;/a&gt;、&lt;a href=&#34;http://bit.ly/SponsorSearchTechTalk&#34;&gt;会場やドリンクスポンサー登録&lt;/a&gt;をお待ちしております！&lt;/p&gt;
</content:encoded>
    </item>
    
    <item>
      <title>検索対象のデータとデータソース(検索システムに関する妄想その3)</title>
      <link>https://blog.johtani.info/blog/2020/09/15/improve-search-no3/</link>
      <pubDate>Tue, 15 Sep 2020 11:23:34 +0900</pubDate>
      
      <guid>https://blog.johtani.info/blog/2020/09/15/improve-search-no3/</guid>
      <description>&lt;p&gt;先日は「&lt;a href=&#34;https://blog.johtani.info/blog/2020/07/28/improve-search-no2/&#34;&gt;検索システムを構成するパーツ&lt;/a&gt;」ということで検索システムを構成しているパーツについて書いてみました。&lt;/p&gt;
&lt;p&gt;大体、検索がうまくヒットしないといった場合に、問題になるのがコンテンツ自体のデータもしくは、転置インデックスのキーワードだったりします。
そこで今回は、前回のパーツの「データソース・コンテンツ」周りについて少し書いてみようと思います。言葉の定義、それぞれがどんなことをやるのか、とりあえず導入したあとにコンテンツ周りでどんな改善ができるかなどを書いてみます。&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;先日は「&lt;a href=&#34;https://blog.johtani.info/blog/2020/07/28/improve-search-no2/&#34;&gt;検索システムを構成するパーツ&lt;/a&gt;」ということで検索システムを構成しているパーツについて書いてみました。&lt;/p&gt;
&lt;p&gt;大体、検索がうまくヒットしないといった場合に、問題になるのがコンテンツ自体のデータもしくは、転置インデックスのキーワードだったりします。
そこで今回は、前回のパーツの「データソース・コンテンツ」周りについて少し書いてみようと思います。言葉の定義、それぞれがどんなことをやるのか、とりあえず導入したあとにコンテンツ周りでどんな改善ができるかなどを書いてみます。&lt;/p&gt;
&lt;h2 id=&#34;言葉の定義&#34;&gt;言葉の定義&lt;/h2&gt;
&lt;h3 id=&#34;コンテンツ&#34;&gt;コンテンツ&lt;/h3&gt;
&lt;p&gt;実際に検索させたいデータになります。
コンテンツにはWebページ、データベースのレコード(CMSで登録されたデータなど)、ファイルサーバーにある文書(PDF、Word、Excelなど)などになります。&lt;/p&gt;
&lt;h3 id=&#34;データソース&#34;&gt;データソース&lt;/h3&gt;
&lt;p&gt;コンテンツのマスタデータが保存されている先です。
よくあるデータソースとしては以下のものが考えられます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Webサイト - 自社もしくはインターネットに存在しているWebサイトです。&lt;/li&gt;
&lt;li&gt;ファイルサーバー - ローカルネットワーク上のファイルサーバーもありますが、最近ではGoogle DriveやDropboxといった外部のWebサービスもあります。&lt;/li&gt;
&lt;li&gt;RDB - CMSや自社システムでのデータの保存先です。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;クローラー&#34;&gt;クローラー&lt;/h3&gt;
&lt;p&gt;コンテンツをデータソースから収集してくるプログラムのことです。
Webサイトやファイルサーバーからコンテンツを収集して検索エンジンに登録するところまでを担当します。
RDBにあるデータを検索エンジンに登録する場合はクローラーがデータを登録するというよりは、RDBにデータを登録するシステムが検索エンジンに登録する機能を持っていることが多いです。&lt;/p&gt;
&lt;h2 id=&#34;データの収集と登録&#34;&gt;データの収集と登録&lt;/h2&gt;
&lt;h3 id=&#34;収集&#34;&gt;収集&lt;/h3&gt;
&lt;p&gt;クローラーを使用した収集の場合は、サービスの特性とデータソースによって、どの程度の頻度でクロールするのか、クロール対象はどこまでか?といったものを決める必要が出てきます。
これらが決まれば収集ができるかと(他に権限とかもありますが。)。
収集コンテンツは、そのままでは利用しにくかったり、利用できないことがあるので、次はデータの変換を行います。&lt;/p&gt;
&lt;h3 id=&#34;データ変換&#34;&gt;データ変換&lt;/h3&gt;
&lt;p&gt;コンテンツはそのままの形では検索エンジンには扱いにくいデータ形式である場合があります。&lt;/p&gt;
&lt;h4 id=&#34;webページの場合&#34;&gt;Webページの場合&lt;/h4&gt;
&lt;p&gt;Webページの場合、コンテンツにはHTMLタグが入っていたり、JavaScriptなど検索対象にはしたくないデータなどが入っています。これらを除去して、検索させたいものを取り出す必要があります。
また、Titleタグなど、いくつかメタデータとして扱えるものがHTMLで規定されているので、これらを別の項目として取り出して個別に検索できるようにすると便利です。
HTMLをパースしてデータを抜き出す処理ができるライブラリなどがあるので活用します。&lt;/p&gt;
&lt;h4 id=&#34;ファイル&#34;&gt;ファイル&lt;/h4&gt;
&lt;p&gt;PDFファイルなど、ファイルの場合もメタデータと呼ばれるファイル自体が持っている情報が存在します。作成者、更新日時、ファイル名、パスなどです。
これらも検索時に有効な情報になります。
また、ファイルから文字列を抜き出す処理も必要になります。
それぞれデータフォーマットが異なりますので、そのフォーマットに合わせて文章データを抜き出す処理が必要です。OSSや製品がありますので、それらを利用して、ファイルから文章を抜き出します。&lt;/p&gt;
&lt;h4 id=&#34;rdb&#34;&gt;RDB&lt;/h4&gt;
&lt;p&gt;RDBのデータの場合、データが正規化されています。
検索エンジンでは、非正規化のデータを登録して検索することが基本となるため、まずは非正規化して取り出す必要が出てきます。&lt;/p&gt;
&lt;p&gt;例えば、ジャンルやカテゴリ、各種IDなどが実際のコンテンツのレコードに入っていると思いますが、これらをユーザーが入力したキーワードで検索したい場合などは、IDではなく表示名を取り出して、検索エンジンに登録する必要が出てきます。&lt;/p&gt;
&lt;h4 id=&#34;その他&#34;&gt;その他&lt;/h4&gt;
&lt;p&gt;データごとの変換処理について説明しました。
その他に、データのクリーニング処理などと言ったことも必要になってきます。例えば、HTMLのタイトルに必ずサイト名が入っているが、除去したいといった場合や、検索エンジン固有のデータの前処理などもあります。&lt;/p&gt;
&lt;h3 id=&#34;登録&#34;&gt;登録&lt;/h3&gt;
&lt;p&gt;最後は検索エンジンへの登録です。
最近の検索エンジンはJSON形式でデータを受け取る場合が多いので、JSONに変換することが多いです。
基本的には各種プログラミング言語のライブラリが用意されているのでこれらを利用するのが基本となります。&lt;/p&gt;
&lt;p&gt;検索したい項目、検索させたい方法などを洗い出し、必要なデータを作成して検索エンジンに登録します。
登録と書いていますが、更新、削除などもここでの対象となります。&lt;/p&gt;
&lt;p&gt;ここまでの流れで、データソースからコンテンツを取得し、変換して、検索エンジンへの登録が終わりました。&lt;/p&gt;
&lt;h2 id=&#34;検索の改善&#34;&gt;検索の改善&lt;/h2&gt;
&lt;p&gt;検索のログから分析して改善していくのが良いですが、ユーザーからの質問や意見などからも改善すべき点が見えてくると思います。
検索ログでは、次のようなものを元に、検索がうまく行かないものを見つけ出します。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;0件ヒット&lt;/li&gt;
&lt;li&gt;0件クリック&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ヒットしていない検索ワードがある場合、コンテンツに問題がある場合があります。まずはこのあたりをとってみるのが良いかと。
そもそも、入力されたキーワードにマッチするコンテンツを扱っていないこともわかりますし、入力されたキーワードに似た単語を持ったコンテンツなども存在するはずです。
類義語の辞書を用意して、検索にヒットできるようにするといった分析と改善にも利用できます。&lt;/p&gt;
&lt;p&gt;あとは、検索エンジン側の話ですが、形態素解析器などを利用している場合に、意図した区切りになっていないために、うまくキーワードがヒットしないと言ったこともあります。&lt;/p&gt;
&lt;h3 id=&#34;コンテンツの理解&#34;&gt;コンテンツの理解&lt;/h3&gt;
&lt;p&gt;実はこれが一番だったりします。
どんなコンテンツを自分たちが扱っているのか?どんなデータがどういった項目でコンテンツに入っているのか?といったところから、
コンテンツのデータを元に検索にヒットさせる方法が改善できます。&lt;/p&gt;
&lt;p&gt;CMSなど人が入力したデータをコンテンツとして扱う場合、入力画面を改良することで、望んでいるデータを入れてもらえたり、不要なデータが入らなくなる可能性があります。
例えば、ECサイトなどで商品の説明文やタイトルにいろいろなキーワードが入っている場合などがあります。むりやりどんなキーワードでもヒットさせたいという入力者の意図もあるのですが、検索しているユーザーにはノイズになることも多いです。適切にカテゴリやジャンル、属性といった項目に分けることでおかしな入力データを減らすことも可能です。&lt;/p&gt;
&lt;p&gt;Webサイトなどをクローリングしたものの場合は、サイトごとに文章の特徴があったり、重複している部分などが合ったりする場合があります。
これらもコンテンツをよく調べることで、不要な情報を除去したりといったことが可能になります。&lt;/p&gt;
&lt;h2 id=&#34;まとめ&#34;&gt;まとめ&lt;/h2&gt;
&lt;p&gt;簡単ですが、検索のデータソースやコンテンツにまつわる話を紹介しました。
もちろんここでは紹介しきれていない項目がいっぱいあります。
また、具体例ではなく概略をざっくりと書いているのでわかりにくい場合もあるかもしれません。
すこしユースケースを絞り込んで書いたほうがわかりやすくなるのかも?&lt;/p&gt;
&lt;p&gt;次はUIとか書くかも?&lt;/p&gt;
&lt;p&gt;不明点とか疑問点、指摘事項などあればコメントしていただければと。
要望などもお待ちしております。&lt;/p&gt;
</content:encoded>
    </item>
    
    <item>
      <title>検索システムを構成するパーツ(検索システムに関する妄想その2)</title>
      <link>https://blog.johtani.info/blog/2020/07/28/improve-search-no2/</link>
      <pubDate>Tue, 28 Jul 2020 12:34:42 +0900</pubDate>
      
      <guid>https://blog.johtani.info/blog/2020/07/28/improve-search-no2/</guid>
      <description>&lt;p&gt;先日は「&lt;a href=&#34;https://blog.johtani.info/blog/2020/07/27/improve-search-no1/&#34;&gt;システムの特徴と検索機能について&lt;/a&gt;」という感じでふんわり書きました。
まぁ、頭の中でぼんやり考えてることを文章にしてみた感じです。
他にもぼんやりしてるものはいくつかあるので今日も書いてみることに。
検索システム?みたいなツイートも見かけたので、検索システムってこんなイメージですというブログを書いてみました。&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;先日は「&lt;a href=&#34;https://blog.johtani.info/blog/2020/07/27/improve-search-no1/&#34;&gt;システムの特徴と検索機能について&lt;/a&gt;」という感じでふんわり書きました。
まぁ、頭の中でぼんやり考えてることを文章にしてみた感じです。
他にもぼんやりしてるものはいくつかあるので今日も書いてみることに。
検索システム?みたいなツイートも見かけたので、検索システムってこんなイメージですというブログを書いてみました。&lt;/p&gt;
&lt;h2 id=&#34;検索システム機能を構成するパーツ&#34;&gt;検索システム(機能)を構成するパーツ&lt;/h2&gt;
&lt;p&gt;今回はシステムに組み込まれる検索機能を構成するパーツについて書き出してみようかなと思います。
パーツといってもユーザー、UI、コンテンツなども入れています。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ユーザー&lt;/li&gt;
&lt;li&gt;検索UI
&lt;ul&gt;
&lt;li&gt;検索窓
&lt;ul&gt;
&lt;li&gt;オートコンプリート&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;検索結果画面
&lt;ul&gt;
&lt;li&gt;ファセット&lt;/li&gt;
&lt;li&gt;ソート&lt;/li&gt;
&lt;li&gt;ハイライト&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;詳細画面
&lt;ul&gt;
&lt;li&gt;レコメンド&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;検索エンジン&lt;/li&gt;
&lt;li&gt;コンテンツ&lt;/li&gt;
&lt;li&gt;検索ログ
&lt;ul&gt;
&lt;li&gt;クリックログとかも&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;サービス提供者&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ざっくり書くとこんな感じです。
システム構成だったり、機能だったり、アクターだったりといろいろなものが混ざってしまっていますが、登場するものはこんなものです。&lt;/p&gt;
&lt;p&gt;ざっくりした繋がりの図はこんな感じです。&lt;/p&gt;


&lt;link rel=&#34;stylesheet&#34; href=&#34;https://blog.johtani.info/css/hugo-easy-gallery.min.css&#34; /&gt;
&lt;div class=&#34;box&#34; style=&#34;max-width:600&#34; &gt;
  &lt;figure  itemprop=&#34;associatedMedia&#34; itemscope
    itemtype=&#34;http://schema.org/ImageObject&#34;&gt;
    &lt;div class=&#34;img&#34; &gt;
      &lt;img itemprop=&#34;thumbnail&#34; src=&#34;https://blog.johtani.info/images/entries/20200731/search_system_overview.jpg&#34;  /&gt;
    &lt;/div&gt;
    &lt;a href=&#34;https://blog.johtani.info/images/entries/20200731/search_system_overview.jpg&#34; itemprop=&#34;contentUrl&#34;&gt;&lt;/a&gt;
  &lt;/figure&gt;
&lt;/div&gt;

&lt;p&gt;それぞれの役割について見ていきましょう。&lt;/p&gt;
&lt;h3 id=&#34;ユーザー&#34;&gt;ユーザー&lt;/h3&gt;
&lt;p&gt;サイト、システムのユーザーです。
検索UIを経由して望んだコンテンツを探します。
探す目的は、サイトによって異なります。
「何かを購入(ECサイトやオークション)する」だったり、「情報(レシピや社内文書)を見つける」だったりします。
図では「キーワード」と記載しましたが、最近では自然文(文章)を受け付ける検索もあります。&lt;/p&gt;
&lt;h3 id=&#34;検索ui&#34;&gt;検索UI&lt;/h3&gt;
&lt;p&gt;サイト、システムが提供するUIです。ユーザーはこのUIにキーワード(質問)を入力し、検索結果を取得します。
UIにはいくつものパーツがさらに存在します。簡単に例を上げると以下のようなものです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;検索窓 - キーワードを入れるための入力ボックスです。
&lt;ul&gt;
&lt;li&gt;オートコンプリート(自動補完) - サイトによっては、検索窓に何かを入力すると、キーワードを保管したりサジェストしたりしてくれます。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;検索結果画面 - 質問にマッチしたコンテンツの一覧を表示する画面です。一覧以外にもいくつか情報が表示されます。
&lt;ul&gt;
&lt;li&gt;検索結果一覧 - コンテンツの一覧です。何かしらの基準(日付順や人気順など)によってソートされたものが表示されます。&lt;/li&gt;
&lt;li&gt;ファセット - 検索結果が持っている属性(価格帯、カテゴリ、メーカー名など)の一覧で、絞り込み検索のヒントです。&lt;/li&gt;
&lt;li&gt;ハイライト - 入力したキーワードがどこにマッチしたかがわかるように、強調表示されたスニペット(情報の一部)が出ます。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;検索APIとUIに分かれている場合が多いでしょうか?
処理の流れとしては、検索窓に入力されたキーワードを検索エンジンに問い合わせができるクエリに書き換えてからリクエストを投げます。
あとは、検索エンジンからのレスポンスにある検索結果を表示できる形に変換して表示するのが役割です。
また、検索ログの出力もこの部分で担当することが多いです(もしくは、検索エンジン自体がログ出力の機能を持っている場合もあります)。&lt;/p&gt;
&lt;h3 id=&#34;検索エンジン&#34;&gt;検索エンジン&lt;/h3&gt;
&lt;p&gt;検索に特化したデータ構造を内部に持っているサーバーもしくはサービスです。
&lt;a href=&#34;https://www.elastic.co/elasticsearch/&#34;&gt;Elasticsearch&lt;/a&gt;や&lt;a href=&#34;https://lucene.apache.org/solr/&#34;&gt;Apache Solr&lt;/a&gt;、&lt;a href=&#34;https://azure.microsoft.com/ja-jp/services/search/&#34;&gt;Azure Cognitive Search&lt;/a&gt;などは転置インデックスと呼ばれるデータ構造になっています。
検索エンジンの検索処理に対しての主な役割は次の2つです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;クエリにマッチするコンテンツの集合を決定する&lt;/li&gt;
&lt;li&gt;マッチしたコンテンツを特定の条件で並び替える(ランキング)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;クエリを受け取り、検索結果のリストを返すのが処理の大きな流れです。
その他に、ファセット、ハイライトといった付加的な処理を実行することがあります。&lt;/p&gt;
&lt;p&gt;また、データ登録(インデキシング/インデクシング)の処理もあります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;登録するコンテンツを検索に特化したデータ構造にして格納する&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;転置インデックスの場合は、入力されたデータ(文章)から単語列を作り出して、単語からコンテンツのIDが判別できる形にする処理になります。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.algolia.com/&#34;&gt;Algolia&lt;/a&gt;や&lt;a href=&#34;https://www.elastic.co/jp/app-search/&#34;&gt;Elastic App Search&lt;/a&gt;のようなSaaSであったり、RDBの機能を利用するといった選択肢もあります。&lt;/p&gt;
&lt;h3 id=&#34;データソースコンテンツ&#34;&gt;データソース・コンテンツ&lt;/h3&gt;
&lt;p&gt;実際に提供したいコンテンツになります。
コンテンツが保存されている場所は、サイトによって異なります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Webの検索サイト - インターネット上のホームページ&lt;/li&gt;
&lt;li&gt;ECサイト - データベースに格納されているアイテムのデータ&lt;/li&gt;
&lt;li&gt;社内文書検索 - ファイルサーバーやWikiなどのファイル、文書&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;といった感じです。
実際には、データソースからコンテンツを検索エンジンに登録する場合は、いくつかの処理(いわゆる前処理)が必要になります。
社内文書検索やWebの検索サイトの場合は、データを収集するためのクローラーが必要ですし、
収集したデータから、検索エンジンに登録するデータを加工したり(HTMLタグを除去したり、メタデータ(URL、収集日、タイトル)を付与したり)もします(ETL処理とか言われる)。&lt;/p&gt;
&lt;h3 id=&#34;検索ログ&#34;&gt;検索ログ&lt;/h3&gt;
&lt;p&gt;検索を提供するだけであれば、必要ありません。
が、実際に検索がどのような使われ方をしているか?を知るために必要な機能になります。
この検索ログがユーザーのニーズを読み解くための情報になります。
検索ログには次のような情報が入ります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;検索窓に入力された文字列&lt;/li&gt;
&lt;li&gt;入力された文字列でヒットした件数&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;検索結果を出したタイミングでのログです。他にも実際にヒットしたコンテンツのIDなどをログに残したり、他のユーザーと区別をつけるために、ユーザーのセッションごとにIDを発行してログに残したりもします。&lt;/p&gt;
&lt;p&gt;また、検索に満足してもらえているかを見るために、実際に検索結果のどのコンテンツに興味をもったのか?という情報も検索ログとして残すことがあります。クリックログなどとも呼ばれます。検索結果のどのドキュメントが実際にクリックされたか(詳細画面に遷移したか)という情報です。1回の検索結果に対してクリックされるごとにログが残ります。
もちろん、結果に満足しない場合は、クリックされずに、キーワードを変えたり、絞り込み条件がクリックされたりします。&lt;/p&gt;
&lt;p&gt;ECサイトなどの場合は更に、実際に購入されたかどうかといった情報もユーザーのニーズを読み解くための情報となります。
詳細画面へのクリックログや購入ログについては、検索以外からの流れ(広告やDMだったり、レコメンドだったり)なども考えられます。
これらのログを元に、検索を改善していくことになります。&lt;/p&gt;
&lt;h3 id=&#34;サービス提供者&#34;&gt;サービス提供者&lt;/h3&gt;
&lt;p&gt;サイト・システムの提供者です。
コンテンツの準備、検索UIにはどんな物が必要なのか、サイト・システムにとって良い検索とはなにか?、検索ログからユーザーのニーズを分析して何を改善していくのか?といったことを考えます。
例としては次のようなことです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;検索結果に表示するコンテンツとはなにか?&lt;/li&gt;
&lt;li&gt;コンテンツの持っている項目・属性の何を検索対象とするか?&lt;/li&gt;
&lt;li&gt;検索結果の並び順(ランキング)がどんなものがよいのか?&lt;/li&gt;
&lt;li&gt;検索UIにはどんなものを表示するのか?&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;検索機能を作るときの流れ&#34;&gt;検索機能を作るときの流れ&lt;/h2&gt;
&lt;p&gt;検索機能を構成するパーツにどんなものがあるかを紹介しました。
実際にシステムに検索機能を追加する場合は、最低限、次のものが必要になります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;検索UI&lt;/li&gt;
&lt;li&gt;検索エンジン(RDB?SaaS?ミドルウェア?)&lt;/li&gt;
&lt;li&gt;データソース・コンテンツ&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;とりあえずこれらがあれば、検索機能を作ることはできるかと。
ただ、作っただけでは、いいか悪いかの判断がつかないので、どういった使われ方をしているかを知るために検索ログをとったりして、
改善をしていく必要が出てきます。&lt;/p&gt;
&lt;h2 id=&#34;まとめ&#34;&gt;まとめ&lt;/h2&gt;
&lt;p&gt;わかってるよそんなことはと言われそうな感じになったかもしれないですが、
検索の機能を構成するパーツについて紹介してみました。
細かなはなしは色々とありますが、大まかにはこのような役割のパーツがあります。&lt;/p&gt;
&lt;p&gt;実際にはこれらのパーツを用意すればよいわけではなく、それぞれで検索を良くしていくためにどんなことを考えていくのか?などが出てきます。そのあたりの話はまた、別のブログで書いていく感じでしょうか。こんな感じで書いてくと、終わらない気がしてきたけど。。。
次はどんなはなしを書くかなぁ。&lt;/p&gt;
</content:encoded>
    </item>
    
    <item>
      <title>システムの特徴と検索機能について(検索システムに関する妄想その1)</title>
      <link>https://blog.johtani.info/blog/2020/07/27/improve-search-no1/</link>
      <pubDate>Mon, 27 Jul 2020 18:28:54 +0900</pubDate>
      
      <guid>https://blog.johtani.info/blog/2020/07/27/improve-search-no1/</guid>
      <description>&lt;p&gt;今年の頭からシステムの検索周りを手伝う仕事をフリーランスとしてやっています。
検索の仕組みを知れば知るほど面白くなってきたからという理由になるのかな?
LuceneやSolr、Elasticsearchなどを長く触っているというのもあるかと思います。&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;今年の頭からシステムの検索周りを手伝う仕事をフリーランスとしてやっています。
検索の仕組みを知れば知るほど面白くなってきたからという理由になるのかな?
LuceneやSolr、Elasticsearchなどを長く触っているというのもあるかと思います。&lt;/p&gt;
&lt;p&gt;ということで、検索についていつも考えています。
頭の中でまとまっていない状況ですが、システムにおける検索機能についていくつか頭の中にあることを書き出して、
いろんな方にダメ出しやコメントをもらいたいなと思ったので、色々と書いてみようかと。
思いつきのままに書いているので、はなしがあちこち飛ぶ可能性もありますが、あしからず。&lt;/p&gt;
&lt;h2 id=&#34;検索って難しい&#34;&gt;検索って難しい&lt;/h2&gt;
&lt;p&gt;「「検索」とは、データの集合から目的のデータを探し出すこと」&lt;a href=&#34;https://ja.wikipedia.org/wiki/%E6%A4%9C%E7%B4%A2&#34;&gt;By Wikipedia&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;一言で「検索」といっても、使う人、ユースケースによっていろいろな「検索」があります。
例えば、新しいスマホを買ったときに、スクリーンロックの時間を設定する機能を「検索」したりします。
また、PCで仕事をしているときに、ファイルの中身をある文字列で「検索」したりもします。
TSUTAYAに行って、欲しかった本がおいてあるかどうか店内の端末で「検索」もします。
Rustを書いていて、こんなことをやるライブラリありそうだよな?と思ってGoogleでウェブの検索をしたりもします。&lt;/p&gt;
&lt;p&gt;私が特にそうだと思いますが、なにかあったらまず検索をするという生活をしています。
ただ、このとき、「検索」といっても望んでいる挙動が違ったりするものです。
以下は自分が「検索」しているときに想定していることになります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ファイル内の検索をしているときはgrep的な検索を想定していることが多い。&lt;/li&gt;
&lt;li&gt;書籍の検索をしているときは、特定の項目(著者など)に対してgrep的な検索を想定しているが、名前の読みなどでも検索されることを想定している(漢字覚えてなかったりする。。。)。&lt;/li&gt;
&lt;li&gt;Rustを書いているときに機能をGoogleで検索するときは、いい感じに検索してくれることを望んでいる(入力するキーワードが曖昧なことが多々ある。例えば、そのものズバリの名前をしらないときとか)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;あくまでも私が想像している挙動です。他の人とは違う可能性もあります。
なので、「検索」といってもさまざまな要素があるし、想定しているシーンも異なるので「難しい」なと思っています。
また、そんな「検索」ですが、世の中的にはあって当たり前だと思われていたり、お金や時間がかかるものと思われてなかったりもします。ま、けどそういったことも含めてやればやるほど面白いなと感じている今日このごろです。&lt;/p&gt;
&lt;p&gt;前置きはこのくらいにして、今回はシステムの特徴と検索機能について感じていることを書いてみようと思います。&lt;/p&gt;
&lt;h2 id=&#34;システムの特徴と検索機能&#34;&gt;システムの特徴と検索機能&lt;/h2&gt;
&lt;p&gt;先ほども書きましたが、検索は今やシステムに欠かせない機能となっています。
が、あればいいというものでもないのではないかなと。とりあえず検索できるべきだということで
検索機能を追加しても使いにくいものや、想定している動きをしない場合は使われないものになってしまいます。&lt;/p&gt;
&lt;p&gt;システムでの検索機能は特に、「情報検索」(&lt;a href=&#34;https://ja.wikipedia.org/wiki/%E6%83%85%E5%A0%B1%E6%A4%9C%E7%B4%A2&#34;&gt;Wikipediaはこちら&lt;/a&gt;)と呼ばれたりもします。Wikipediaによるとこんな説明です。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;情報検索（じょうほうけんさく）とは、コンピュータを用いて大量のデータ群から目的に合致したものを取り出すこと。検索の対象となるデータには文書や画像、音声、映像、その他さまざまなメディアやその組み合わせとして記録されたデータなどが含まれる。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;「目的」と呼ばれるものは「ユーザーのニーズ」と呼ばれたりもします。
「合致したもの」というのがシステムが返す「検索結果」になります。検索結果は大体の場合、何かしらの順序でソートされていることが多いです。
ざっくり話をすると、「ユーザーのニーズ」を元に「(何かしらの順序でソートされている)検索結果」を返すという処理です。&lt;/p&gt;
&lt;p&gt;ただ、この「ユーザーのニーズ」や「何かしらの順序でソートされている検索結果」はシステムの特性、特徴によってぜんぜん違うものになります。検索エンジンを入れただけで解決するものではありません。&lt;/p&gt;
&lt;p&gt;また、システムは提供する側のニーズもあります。
ECサイトであればより多くのユーザーに購買してもらったり、
コミュニティサイトの場合は利用ユーザーを増やしてコンテンツや広告の収入を増やしたりといったニーズがあります。&lt;/p&gt;
&lt;p&gt;これらの両方のニーズが検索機能に影響を与えたりもします。&lt;/p&gt;
&lt;p&gt;いくつか例を上げてみましょう。&lt;/p&gt;
&lt;h3 id=&#34;書籍の検索の場合&#34;&gt;書籍の検索の場合&lt;/h3&gt;
&lt;p&gt;ユーザーのニーズは、「ある本を探す」ことです。そのためにユーザーがクエリを入力します。
クエリは、例にも出しましたがタイトルや著者名の読みだったりします。
検索窓が1つしかないというよりは、著者やタイトル、出版社などそれぞれの項目ごとに検索できるほうが便利だったりしますよね。
検索結果については、完全一致したものが一番最初に出てきてほしいこともあれば、出版年月日の降順で並べたいことなど、
その時々でやりたいことが変わったりもします。&lt;/p&gt;
&lt;p&gt;場合によっては、説明文などでも検索できると嬉しいこともあります。また、システムからは離れますが、図書館や書店で時々、「〇〇について書かれている本ありますか?」といった聞き方をしたりもします。&lt;/p&gt;
&lt;p&gt;また、書店としては、探している本を見つけてもらうために検索端末などを用意しますが、そ
れ以外の本も買ってもらえるといいですよね。
オンラインの書店などでは、検索結果や書籍詳細の画面に関連書籍が出ていることもあります。&lt;/p&gt;
&lt;p&gt;検索とは少し異なり、探索(なにか面白い本とかないかな?というようなニーズ)をしに、書店に行くこともあります。
書店で平積みされた本やポップなどを見て新しい本に興味を持つこともあります。&lt;/p&gt;
&lt;h3 id=&#34;オークションサイトやecサイトでの検索の場合&#34;&gt;オークションサイトやECサイトでの検索の場合&lt;/h3&gt;
&lt;p&gt;ユーザーのニーズは、「欲しい物を探す」ことです。
ユーザーが入力するクエリは、幅広いものになると思います。製品の型番を入力する人もいれば、
メーカー名や製品名だったり、ジャンルで絞り込んで検索することもあります。&lt;/p&gt;
&lt;p&gt;探されるもの(コンテンツ、アイテム)も多数に渡ります。
検索窓は1つかもしれませんが、検索結果には、絞り込み条件(ファセット)がいくつか並んで、絞り込んでいける仕組みが用意されていることが多いです。&lt;/p&gt;
&lt;p&gt;検索結果のソートは、価格順だったり人気順だったりします。
ただ、オークションサイトの場合は新しいもの順や、終了日時の早い物順だったりします。&lt;/p&gt;
&lt;p&gt;サイト提供者のニーズとしては、より多くのアイテムを購入してもらうこと(売上)です。
また、オークションサイトの場合は、アイテムを提供している人のニーズも影響してくるでしょう。
売りたい人はより多くの人の目に留まってほしいと思うはずなので、
様々な情報を付与していかに目にとまるか?といったことを考えてくると思います。&lt;/p&gt;
&lt;p&gt;また、様々な商品を扱うECサイトの場合は、さらに色々と大変になってきます。たとえば、「iPhone」で検索されたときに、
iPhoneそのものが上位に来るべきなのか、ケースなどの周辺商品なのかだったりといった問題が出てきます。
商品の提供者が多数に渡る場合は、同一商品でもさまざまなお店から提供されてしまうために、検索結果一覧に多数同じ商品が並んだりもしますよね。&lt;/p&gt;
&lt;h3 id=&#34;レシピサイトでの検索の場合&#34;&gt;レシピサイトでの検索の場合&lt;/h3&gt;
&lt;p&gt;ユーザーのニーズは「レシピを探す」です。が、探し方はユーザーによって様々です。
冷蔵庫にある材料を入力して検索することもあれば、食べたいものが決まっていてそのレシピを検索することもあります。
このとき、重要なのは類義語だったりするでしょう。食材やレシピは同じものでも様々な名前(例:パクチー、コリアンダー、シャンツァイ(香菜)など)を持っていたりします。また、部位や形によっても名前が変わったりもします。&lt;/p&gt;
&lt;p&gt;検索結果は人気順で並ぶことが多いでしょうか?
ただ、レシピの提供がユーザーによるものなのか、サイト運営者が提供しているものかによっても変わってくるでしょう。&lt;/p&gt;
&lt;p&gt;サイト提供者のニーズとしては、レシピコミュニティサイトの場合は、ユーザー数の増加や広告の売上などがあるでしょう。
調味料などのメーカーがレシピサイトをやっている場合は、調味料の売上だったりします。この場合は、検索がどの程度売上に寄与しているのか?などを測ることが難しかったりしそうです。&lt;/p&gt;
&lt;h3 id=&#34;社内文書検索の場合&#34;&gt;社内文書検索の場合&lt;/h3&gt;
&lt;p&gt;ユーザーのニーズは「文書を探す」です。探し方はファイル名であったり、ファイルのなかに出てくる単語だったりします。
社内用語・略語のような特殊な単語で検索されることもあるでしょう。ユーザーによっては、ぼんやりとした「こんな資料を探している」といったふんわりとした検索をしたくなることもあります。&lt;/p&gt;
&lt;p&gt;検索結果の表示順は「それっぽいもの」が上位に出てくることが望まれそうです。
ただ、古い文書が出てきても役に立たないこともあります。新しい文書のほうが役に立つことが多いので、最近作られたものというのも重要な情報になります。ただし、権限によっては見ることができなかったり、そもそも探すこともNGだったりもします。&lt;/p&gt;
&lt;p&gt;社内文書検索の提供者は、素早く検索できるものを提供することで仕事の効率を上げてもらったり、無駄を省くことができることを期待しているでしょう。&lt;/p&gt;
&lt;p&gt;昔からですが、社内の文書は様々な場所に散らばっていることが多いです。顧客管理システム、ファイルサーバー、Wiki、ウェブサイトなどこれらをまとめて検索できるシステムなどが望まれていることも多いです(使われるかはまた別ですが。。。)。&lt;/p&gt;
&lt;h3 id=&#34;スマートスピーカーの場合&#34;&gt;スマートスピーカーの場合&lt;/h3&gt;
&lt;p&gt;ちょっと特殊な面白い例かなと思ってます。
音声で検索(というかお願い?)します。
システムとしては、ユーザーのニーズを理解するのに2段階あるのかなと。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;音声認識&lt;/li&gt;
&lt;li&gt;認識した文章・キーワードで検索(場合によってはコマンド発行)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これだけでも難易度が増します。&lt;/p&gt;
&lt;p&gt;さらに、画面のないスピーカーの場合は、結果は1件だけになります。これって結構難しいことだと思うんです。
画面があれば、検索結果を上位10件などのリストで表示して、あとはユーザーに選んでもらうことができますが、
音声の場合は1件だけしか返せません。
また、レスポンスタイムもシビアなものだと想定されます。ずっとスピーカーに黙っていられると困りますよね?
きっと大変なんだろうなぁ(妄想)。&lt;/p&gt;
&lt;p&gt;このように、検索と言っても、システムごとに要求・想定されるものは変わってきます。&lt;/p&gt;
&lt;h2 id=&#34;まとめ&#34;&gt;まとめ&lt;/h2&gt;
&lt;p&gt;例をいくつか上げましたが、ざっくりしすぎて発散してますかね。。。
想像している部分もあるので、この通りではないと思います。
ただ、システムによって、「検索」といってもシステムの特性上、
さまざまな物事、思惑が絡んでくるというのは想像してもらえたと思います?(思いたい)。&lt;/p&gt;
&lt;p&gt;システムに検索機能を追加すると言っても、探したいものが何なのか?、探してもらうものはどういったものなのか?、
検索機能を追加することで何を達成したいのか?など考えることは色々あります。
どうやって、検索機能を実装するのか、その検索機能を実装するためにはどんな情報が必要なのか?などの検索機能のコアな部分を考えるだけでなく、提供しているシステム、コンテンツがどんなものかなど、システム全体を考えながら検索機能を考えていく事が検索をより良いものとして行くことだと思います。&lt;/p&gt;
&lt;p&gt;また、検索されるものも検索する人もシステムが成長するのに合わせて変化していきいます。システム同様、一度作ればおしまいというものではないので、やることはいっぱいあるのかなと。&lt;/p&gt;
&lt;p&gt;次は、検索のパーツについてなにか書こうかなぁ。&lt;/p&gt;
&lt;h3 id=&#34;ボヤキ&#34;&gt;ボヤキ&lt;/h3&gt;
&lt;p&gt;もう少しまとめてから書いたほうがいいのかもなぁ。
もしくは、出てくる要素を整理するとか。
ユーザー、コンテンツ、コンテンツ提供者とかで。
ふんわりとしたブログになってしまった。
個別のシステムごとにもっと書けることもありそう。&lt;/p&gt;
</content:encoded>
    </item>
    
    <item>
      <title>Search Engineering Tech Talk(検索技術勉強会)の運営として参加して始めてみました。</title>
      <link>https://blog.johtani.info/blog/2019/02/26/start-search-engineering-tech-talk/</link>
      <pubDate>Tue, 26 Feb 2019 23:38:00 +0900</pubDate>
      
      <guid>https://blog.johtani.info/blog/2019/02/26/start-search-engineering-tech-talk/</guid>
      <description>&lt;p&gt;どーも、johtaniです。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://search-tech.connpass.com/event/112866/&#34;&gt;Search Engineering Tech Talk&lt;/a&gt;という勉強会に運営として参加して、第1回の勉強会を開始しました。
本日（2/26）は第1回目だったので、ブログを残しておこうかと。&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;どーも、johtaniです。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://search-tech.connpass.com/event/112866/&#34;&gt;Search Engineering Tech Talk&lt;/a&gt;という勉強会に運営として参加して、第1回の勉強会を開始しました。
本日（2/26）は第1回目だったので、ブログを残しておこうかと。&lt;/p&gt;
&lt;!-- more --&gt;
&lt;p&gt;勉強会自体の資料については&lt;a href=&#34;https://search-tech.connpass.com/event/112866/&#34;&gt;第1回の勉強会のページ&lt;/a&gt;にあるし、勉強会の感想とかブログはツイートやみんながブログを書いてくれると思うので、勉強会開催の経緯などについてブログを残しておこうかと。&lt;/p&gt;
&lt;h2 id=&#34;なんで始めたの&#34;&gt;なんで始めたの？&lt;/h2&gt;
&lt;p&gt;私自身が古くはFAST Searchに始まり、何か縁があって、
検索のシステムに長く携わってきたこと（Apache Solrの本書いたり、Elasticsearch勉強会始めたり）もあり、
検索が面白いなと日々思ってます（思ってるだけかもしれないが）。&lt;/p&gt;
&lt;p&gt;で、これまでElasticsearch勉強会をやっているのですが、検索エンジン固有の話ではない、
いわゆる検索の共通の課題というのがあるなぁと。
そういう課題やノウハウって、製品に限らず共有できれば面白いことがもっとできるんじゃないだろうか？
と感じることが多々ありまして。
オープンソースのコミュニティをソースコードをベースではなく、共通の課題・話題を中心としたコミュニティが
あってもいいんじゃないかなぁと。&lt;/p&gt;
&lt;p&gt;まぁ、要は、私がみんなの検索で困ってることとか、どうやって検索システム考えてるのかが聞きたかったわけですよ。&lt;/p&gt;
&lt;p&gt;ということで、一人でやっても面白くないので、興味ありそうな人を募ってやってみようということを始めたのが2018年12月くらいです。&lt;/p&gt;
&lt;h2 id=&#34;運営とかどうしてるの&#34;&gt;運営とかどうしてるの？&lt;/h2&gt;
&lt;p&gt;まずは、共同主催者（コアメンバー）を募集してみようということで、Googleフォーム作って、
興味ありそうな人がいる場所に投稿してみました。（TwitterとかFBとか）
で集まったのが今回紹介したメンバー（&lt;a href=&#34;https://noti.st/johtani/ZsQG5A/search-engineering-tech-talk&#34;&gt;スライド参照&lt;/a&gt;）です。
ユーザー企業の人もいれば、私みたいな検索エンジンの人もいるので面白い感じにできたかなぁと。
で、スピーカーを運営や知り合いに声をかけて第1回をやってみたという感じです。&lt;/p&gt;
&lt;h2 id=&#34;今後どうするの&#34;&gt;今後どうするの？&lt;/h2&gt;
&lt;p&gt;残念ながら次回はまだ未定です。
2ヶ月に1回くらいのペースで開催できればなーと思ってますが、スピーカーが集まるかなどによるかなぁと。
ということで、&lt;a href=&#34;https://search-tech.connpass.com&#34;&gt;勉強会のグループのページ&lt;/a&gt;にスピーカー応募フォームのリンクがありますので、スピーカーに興味がある方は入力していただければと。&lt;/p&gt;
&lt;p&gt;もちろん第2回はやりたいので、勉強会のページからの連絡をお待ちください！！&lt;/p&gt;
</content:encoded>
    </item>
    
  </channel>
</rss>
