Skip to content

Commit

Permalink
Merge branch 'main' of github.com:next-l/documentation into main
Browse files Browse the repository at this point in the history
  • Loading branch information
masao committed Jan 13, 2025
2 parents 22e0a88 + e7c77b3 commit feaf95e
Showing 1 changed file with 22 additions and 21 deletions.
43 changes: 22 additions & 21 deletions 1.4/enju_install_vm_6.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -12,27 +12,28 @@ toc::[]

== 検索エンジンの設定

=== 検索における異体字の同一視
=== 検索時の異体字を同じ文字として扱う方法

書誌情報には「森鷗外/鴎外」「内田百閒/百間」「芥川龍之介/竜之介」のように、さまざまな異体字が混在しています
これらを別字として扱ってしまうと大量の検索漏れが生じるので、検索においては「鷗」と「鴎」を同一視する必要があります
書誌情報には「森鷗外/森鴎外」や「内田百閒/内田百間」、「芥川龍之介/芥川竜之介」といった異体字が混在しています
これらの文字を別のものとして扱うと、検索結果に漏れが生じる可能性があります。たとえば、「森鷗外」で検索すると「森鴎外」が含まれない、といった問題が起きるのです

検索時に異体字を同一視させるためには、検索エンジン側でその設定を行わなければなりません。
本章ではEnjuと連携して動作する全文検索エンジンApache Solrにおける設定手順を説明します。
こうした問題を解決するために、検索時には「鷗」と「鴎」などの異体字を同じ文字として扱う設定が必要です。

==== 異体字を同一視するようにSolrを設定する
この設定を行うには、検索エンジンで適切な設定を施す必要があります。本章では、Enjuと連携して動作する全文検索エンジン「Apache Solr」での設定方法を解説します。

SolrのCharFilterという機能を使えば異体字を同一視して検索させることができます。
=== 異体字を同じ文字として扱うようにSolrを設定する

例えば「島」「嶋」「嶌」を検索上同一視させたいとします。その場合、代表の文字を一つ、例えば「島」と決めます。そして、「嶋」「嶌」を「島」に変換するような設定を行います。
SolrのCharFilterという機能を使えば異体字を同じ文字として検索させることができます。

例えば「島」「嶋」「嶌」を検索上同じ文字として扱いたいとします。その場合、代表の文字を一つ、例えば「島」と決めます。そして、「嶋」「嶌」を「島」に変換するような設定を行います。

するとSolrは、書誌情報から検索用データを作成する際に、「嶋」「嶌」を「島」に変換します。

また、検索を行う際も、検索語の中の「嶋」「嶌」を「島」に変換します。

これにより、「大嶋」で「大島」も「大嶌」もヒットするようになります。

===== マッピングファイルを作成
==== マッピングファイルを作成

以下のような形式のマッピングファイルを作ります。

Expand Down Expand Up @@ -67,13 +68,13 @@ Unicodeのコード番号で文字を指定することもできます。4桁の

変換元は空文字列にできませんが、変換先は空文字列を指定することができます。

====== マッピングファイルを配置
==== マッピングファイルを配置

Enju インストールディレクトリーの下に solr/conf があります。

前節で作成したマッピングファイルをここに入れておきます。

====== 設定ファイルにファイル名を書く
==== 設定ファイルにファイル名を書く

solr/conf ディレクトリーの中に schema.xml というXMLファイルがあります。

Expand All @@ -96,7 +97,7 @@ solr/conf ディレクトリーの中に schema.xml というXMLファイルが
また、漢字の異体字とラテン文字の置き換え(「æ」→「ae」など)を別ファイルにする、といった分け方もできます。


====== Enjuの再起動とSolrの再インデックス
==== Enjuの再起動とSolrの再インデックス

設定が終わったら、設定を反映するために、Enju を再起動(リスタート)して、書誌情報を再度インデックスします。

Expand All @@ -106,17 +107,17 @@ solr/conf ディレクトリーの中に schema.xml というXMLファイルが

これで異体字でも検索ができるようになるはずです。

====== 参考サイト
==== 参考サイト

[https://cwiki.apache.org/confluence/display/solr/CharFilterFactories#CharFilterFactories-solr.MappingCharFilterFactory](https://cwiki.apache.org/confluence/display/solr/CharFilterFactories#CharFilterFactories-solr.MappingCharFilterFactory)
https://cwiki.apache.org/confluence/display/solr/CharFilterFactories#CharFilterFactories-solr.MappingCharFilterFactory[solr.MappingCharFilterFactory]

上記ページにCharFilterの仕様などが詳しく書かれています。公式サイトです。

==== 異体字の考え方
=== 異体字の考え方

異体字のマッピングファイルを作るにあたって注意すべきことなどを述べます。

===== 時代性
==== 時代性

現在、「著」と「着」は別字であり、「著しい」「著す」「著作」/「着る」「着く」「着信」などと使い分け、交換できません。

Expand All @@ -126,15 +127,15 @@ solr/conf ディレクトリーの中に schema.xml というXMLファイルが

このように、ある二つの漢字が異体字であるかどうかはそれが使われた時代によって変わります。

===== 異体字のような別字
==== 異体字のような別字

「斉」と「齊」は異体字の関係にあります。「斎」と「齋」もそうです。しかし、「斉・齊」と「斎・齋」とは別字です。「書斎」は「書斉」とは書けず、「一斉」は「一斎」とは書けません。

とはいえ、人名(サイトウ)に限って言えばこの四字は異体字のように使われており、異体字だと思っているサイトウさんも少なくないようです。

検索上は異体字かどうかに拘泥せず、この四字を同一視するのがよいかもしれません
検索上は異体字かどうかに拘泥せず、この四字を同じ文字として扱うのがよいかもしれません

===== 代用漢字
==== 代用漢字

「国際連盟」「連合艦隊」はそれが存在した時代には「國際聯盟」「聯合艦隊」と書かれていました。しかし、「聯」は「連」の異体字ではありません。

Expand All @@ -146,7 +147,7 @@ solr/conf ディレクトリーの中に schema.xml というXMLファイルが

単語単位で「午后」を「午後」に変換するのでなく文字単位で「后」を「後」に変換する場合,「后」(きさき)による検索で大量の検索ノイズが発生するかもしれません。

===== 中国語の簡体字
==== 中国語の簡体字

中国の「広東省」は簡体字で「广东省」と書きます。「广」/「広」、「东」/「東」は異体字の関係にあるので、このペアもマッピングファイルに入れておけば、中国語の書誌情報も手軽に検索できてすこぶる便利ではないでしょうか。

Expand All @@ -156,7 +157,7 @@ solr/conf ディレクトリーの中に schema.xml というXMLファイルが

このように、どの字とどの字が異体字の関係になるかは、言語によっても異なります。

===== 検索ノイズとの兼ね合い
==== 検索ノイズとの兼ね合い

上で見たように,異体字マッピングを拡充すれば検索漏れが減らせる一方で検索ノイズが増えることがあります。再現率(検索漏れの少なさ)と適合率(検索ノイズの少なさ)は一般にはトレードオフの関係にあります。

Expand Down

0 comments on commit feaf95e

Please sign in to comment.