多言語サイトにおける検索結果で、1つのコンテンツの言語の違い、という情報を持たせる形でソースを作成することができます。この手順に関して、2回に分けてソースを作成する手順を紹介していきます。
![](/_next/image?url=https%3A%2F%2Fimages.ctfassets.net%2Fzi1ovlormku8%2F5PY9MP07SAAU3UbpgZmHbf%2Fa0acf7a0b6bb608327dd6b83c3b4c02c%2Fpisit-heng-FQvadXmA524-unsplash.jpg&w=3840&q=75)
ローカライズコンテンツのクロール
同じコンテンツを多言語で展開している場合、例えば Siteocre.com では以下のような情報があります。
- https://www.sitecore.com/whats-new
- https://www.sitecore.com/ja-jp/whats-new
どちらも新着情報ですが、英語版、日本語版という形で提供しています。一方、検索結果で言語毎の結果を出す場合、言語を切り替えることができると便利です。今回は、このようなケースでのクロールをする方法を紹介していきます。
なお、以下のページで手順は公開されています。
コンテンツの ID を決める
コンテンツの ID はデフォルトではランダムな文字列が割り当てられます。
![searchcontentid01.png](/_next/image?url=https%3A%2F%2Fimages.ctfassets.net%2Fzi1ovlormku8%2FZ23FU4qgMh2zDBZFwhyKG%2F746080ede51c7f23075b0503abfdf94e%2Fsearchcontentid01.png&w=3840&q=75)
この ID に関してはソースの設定で個別に指定することができます。この値はもちろんユニークである必要があるため、URL を利用して Document Extractors の JavaScript で ID を作成します。
URL から ID を作成するために、以下のコードを追加します。
JavaScript
function extract(request, response) {
$ = response.body;
let url = request.url;
// URL から id を作成する
let id = url.replaceAll('/', '_').replaceAll(':', '_').replaceAll('.', '_');
そして返す値に対しては、以下の id のコードを1行追加してください。
JavaScript
return [{
'id': id,
これで保存をして、改めてソースの取得を実行します。
クロールの結果を確認する
しばらくすると、ソースがアップデートされて、クロールおよびインデックス化が完了します。
![searchcontentid02.png](/_next/image?url=https%3A%2F%2Fimages.ctfassets.net%2Fzi1ovlormku8%2F5mH1ztRgiIj05yfXZubEv%2Fb7c3ef0dbc4bd1431299a213219e16a8%2Fsearchcontentid02.png&w=2048&q=75)
id が URL ベースになっているのを確認しました。
まとめ
今回は URL を利用して id を作成するようにしました。次回はロケールの部分を削除して、1つの ID に対して複数言語のコンテンツの情報を入れて、多言語での検索に対応できるデータを作成していきます。