1. IK分詞器の導入と設定
1.1 IK分詞器の準備
まず、IK Analyzerのバイナリファイル(例: IKAnalyzer2012FF_u1.jar)を取得し、以下のパスに配置します:
- JARファイル →
$TOMCAT_HOME/webapps/solr/WEB-INF/lib/ - 辞書・設定ファイル(
IKAnalyzer.cfg.xmlおよび拡張辞書など)→$TOMCAT_HOME/webapps/solr/WEB-INF/classes/
1.2 schema.xmlへのフィールドタイプ定義
schema.xml に以下のフィールドタイプを追加して、IK分詞器を使用可能にします:
<fieldType name="text_ik" class="solr.TextField">
<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>
また、このタイプを使用するフィールドも定義します(例):
<field name="content_ik" type="text_ik" indexed="false" stored="true" multiValued="true"/>
1.3 設定の検証
Tomcatを再起動後、Solr Admin UIの「Analysis」ページで任意のCoreを選択し、text_ik タイプを使って中国語テキストの分詞結果を確認します。
2. 商品検索用スキーマの構成
2.1 商品テーブルの準備
以下のような商品テーブルをMySQLに作成します:
CREATE DATABASE IF NOT EXISTS solr;
USE solr;
CREATE TABLE products (
pid INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(255),
catalog INT,
catalog_name VARCHAR(50),
price DOUBLE,
number INT,
description LONGTEXT,
picture VARCHAR(255),
release_time DATETIME
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2.2 Solrフィールド設計
商品データに対応するSolrフィールドを以下のように定義します:
<!-- 主キー(Solrのidフィールドを再利用) -->
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false"/>
<!-- 商品名(IK分詞 + 高亮表示対応) -->
<field name="product_name" type="text_ik" indexed="true" stored="true"/>
<!-- 分類ID(数値) -->
<field name="product_catalog" type="int" indexed="true" stored="true"/>
<!-- 分類名(完全一致検索) -->
<field name="product_catalog_name" type="string" indexed="true" stored="true"/>
<!-- 価格 -->
<field name="product_price" type="double" indexed="true" stored="true"/>
<!-- 商品説明(インデックスのみ) -->
<field name="product_description" type="text_ik" indexed="true" stored="false"/>
<!-- 画像パス(表示用) -->
<field name="product_picture" type="string" indexed="false" stored="true"/>
<!-- 統合検索用コピー先フィールド -->
<field name="product_keywords" type="text_ik" indexed="true" stored="true" multiValued="true"/>
<copyField source="product_name" dest="product_keywords"/>
<copyField source="product_catalog_name" dest="product_keywords"/>
<copyField source="product_description" dest="product_keywords"/>
2.3 schema.xmlの更新と適用
上記フィールド定義を schema.xml に追記し、Solr Coreが使用しているスキーマに反映させます。主キーとして id フィールドが存在することを確認してください。これが欠如すると、インデックスは作成されても検索結果が返らないことがあります。
2.4 設定確認
Tomcatを再起動後、Solr Admin UIの「Schema」または「Analysis」ページで各フィールドの型とコピー関係が正しく設定されているかを確認します。