============================ 索引文字列抽出についての設定 ============================ 索引文字列抽出について ====================== 検索のためのインデックスを作成する際、索引として登録するために文書を切り分ける必要があります。このために使用されるのが、トークナイザーです。 基本的に、トークナイザーによって切り分けられた単位よりも小さいものは、検索を行ってもヒットしません。例えば、「東京都に住む」という文を考えます。いま、この文が「東京都」「に」「住む」というようにトークナイザーによって分割されたとします。この場合、「東京都」という語で検索を行った場合はヒットします。しかし、「京都」という語で検索を行った場合はヒットしません。そのためトークナイザーの選択は重要です。 |Fess| の場合デフォルトでは StandardTokenizer+CJKBigramFilter が使用されていますが、schema.xml の analyzer 部分を設定することでトークナイザーを変更することができます。 CJKBigramFilterについて ----------------------- StandardTokenizer+CJKBigramFilter は日本語のようなマルチバイトの文字列に対しては bi-gram 、つまり二文字ずつインデックスを作成します。この場合、1文字の語を検索することはできません。 StandardTokenizerについて ------------------------- StandardTokenizer は日本語のようなマルチバイトの文字列に対しては uni-gram 、つまり一文字ずつインデックスを作成します。そのため、検索漏れが少なくなります。また、CJKTokenizerの場合、1文字のクエリを検索することができませんが、StandardTokenizerを使用すると検索可能になります。しかし、インデックスサイズが増えるので注意してください。 下記の例のように solr/core1/conf/schema.xml の analyzer 部分を変更することで、StandardTokenizer を使用できます。 :: : : また、webapps/fess/WEB-INF/classes/app.diconでデフォルトで有効になっているuseBigramをfalseに変更します。 :: : true : 設定後、 |Fess| を再起動します。