1.6. アナライザ


次にもう少し面白いことをしてみましょう。インデックス化された書籍タイトルのいずれかが "Refactoring: Improving the Design of Existing Code" であり、"refactor"、"refactors"、"refactored"、および "refactoring" のすべてのクエリでヒットしたいとします。Lucene では、これはインデックス作成中と検索処理中にワードステミングを適用するアナライザクラスを選択して実現できます。Hibernate Search は、使用するアナライザを設定する複数の方法を提供します (「アナライザ」 を参照)。
  • 設定ファイルでの hibernate.search.analyzer プロパティの設定。指定されたクラスはデフォルトのアナライザです。
  • エンティティレベルでの @Analyzer アノテーションの設定。
  • フィールドレベルでの @Analyzer アノテーションの設定。
@Analyzer アノテーションを使用する場合は、使用するアナライザの完全修飾クラス名を指定したり、@AnalyzerDef アノテーションにより定義されたアナライザ定義を参照したりできます。アナライザ定義を参照する場合は、ファクトリを使用する Solr アナライザフレームワークが使用されます。利用可能なファクトリクラスの詳細については、Solr JavaDoc または Solr Wiki の対応するセクションを参照してください。選択されたファクトリに応じて、Solr 依存関係の上部に追加のライブラリが必要になることがあります。たとえば、PhoneticFilterFactorycommons-codec に依存します。
以下の例では、StandardTokenizerFactory が使用され、その後に LowerCaseFilterFactorySnowballPorterFilterFactory の 2 つのフィルタファクトリが続きます。標準的なトークナイザは単語を句読点とハイフンで分割します (電子メールアドレスとインターネットホスト名はそのまま保持されます)。これは優れた汎用的なトークナイザです。小文字のフィルタは各トークンの文字を小文字にし、スノーボールフィルタは言語固有のステミングを適用します。
一般的に、Solr フレームワークを使用する場合は、最初にトークナイザを使用し、次に任意の数のフィルタを使用する必要があります。

例1.10 @AnalyzerDef および Solr フレームワークを使用してアナライザを定義および使用

package example;
...
@Entity
@Indexed
@AnalyzerDef(name = "customanalyzer", tokenizer = @TokenizerDef(factory = StandardTokenizerFactory.class), filters = { @TokenFilterDef(factory = LowerCaseFilterFactory.class), @TokenFilterDef(factory = SnowballPorterFilterFactory.class, params = { @Parameter(name = "language", value = "English") }) })
public class Book {

  @Id
  @GeneratedValue
  @DocumentId
  private Integer id;
  
  @Field(index=Index.TOKENIZED, store=Store.NO)
  @Analyzer(definition = "customanalyzer")
  private String title;
  
  @Field(index=Index.TOKENIZED, store=Store.NO)
  @Analyzer(definition = "customanalyzer")
  private String subtitle; 

  @IndexedEmbedded
  @ManyToMany 
  private Set<Author> authors = new HashSet<Author>();

  @Field(index = Index.UN_TOKENIZED, store = Store.YES)
  @DateBridge(resolution = Resolution.DAY)
  private Date publicationDate;
  
  public Book() {
  } 
  
  // standard getters/setters follow here
  ... 
}

Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat