KeywordTokenizerについてご教示いただけますでしょうか

トピック作成者:Solr初心者 (2024/07/12 15:41 投稿)
2
OpenOpen

現在、Solrを学習中なのですが、いくつか不明点がございます。その中の一つに、KeywordTokenizerに関するものがございます。私の理解が正しければ、KeywordTokenizerはテキストフィールド全体を1つのトークンとして扱う、何もしないトークナイザーであると考えております。しかし、SolrにはStrFieldというフィールドタイプも存在し、こちらもフィールド全体を1つのトークンとして扱うものと認識しております。

そこでお伺いしたいのですが、これら二つの違いは一体何なのでしょうか。ガイドを見る限り、StrFieldには約32Kという厳しい制限があるとのことです。この制限を踏まえ、フィールドの長さに応じて使い分けるべきなのでしょうか。ご教示いただけますと幸いです。

返信投稿者:kojisays (2024/07/12 17:09 投稿)

私の理解が正しければ、KeywordTokenizerはテキストフィールド全体を1つのトークンとして扱う、何もしないトークナイザーであると考えております。

はい、そのとおりです。

string型(StrField)ではなく、あえてKeywordTokenizerを使う意味は、KeywordTokenizerはanalyzerを指定できるので、KeywordTokenizerの後ろにTokenFilterを定義できる、というところがstring型と違います。たとえば次のように、KeywordTokenizerの後ろにLowerCaseFilterを定義したりできます。

  <analyzer type="query">
    <tokenizer class="solr.KeywordTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>

string型ですと AAAAAA でないと検索にヒットしませんが、上記のKeywordTokenizer+LowerCaseFilterなら AAA はもちろん、 aaa でも検索にヒットします。

KandaSearchサイト内をKeywordTokenizerで検索してもらえば、より実用的な使用例が見つかります。たとえば、第4回 全文検索のさまざまなテクニック|Apache Solr ハンズオンセミナーには、前方一致や後方一致のための専用フィールド型を、KeywordTokenizerを使って定義しています。

返信投稿者:Solr初心者 (2024/07/16 09:29 投稿)

kojisays様

ご回答を賜りまして、誠にありがとうございます。

string型(StrField)ではなく、あえてKeywordTokenizerを使う意味は、KeywordTokenizerはanalyzerを指定できるので、KeywordTokenizerの後ろにTokenFilterを定義できる、というところがstring型と違います。

謹んで拝読いたしましたところ、以下のように解釈いたしました。

  • フィールド全体を1つのトークンとする点におきましては、string型(StrField)とKeywordTokenizerの間には相違がない。
  • 但し、KeywordTokenizerの場合はTokenFilterと組み合わせることで、大文字小文字の正規化をはじめとする様々な正規化をトークン(フィールド全体となりますが)に対して行うことが可能である。

なお、KeywordTokenizerで検索した結果には以下のようにcharFilterと組み合わせて使用している例も載っておりました。

  <analyzer type="query">
    <charFilter class="solr.MappingCharFilterFactory" mapping="RONDHUIT-mapping-ja-1.0.0.txt"/>
    <tokenizer class="solr.KeywordTokenizerFactory"/>
    <filter class="solr.ICUTransformFilterFactory" id="Hiragana-Katakana"/>
  </analyzer>

従いまして、KeywordTokenizerの場合は、charFilterおよびTokenFilterと組み合わせることが可能であると理解いたしました。

どうぞ、今後ともよろしくお願い申し上げます。

トピックへ返信するには、ログインが必要です。

KandaSearch

Copyright © 2006-2024 RONDHUIT Co, Ltd. All Rights Reserved.

投稿の削除

この投稿を削除します。よろしいですか?