huangfox

冰冻三尺,非一日之寒!

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

有时为了满足特有的需求,可能需要对现有的分词器进行调整,为了完成对这些特有分词器的配置,需要完成以下步骤。

(基本思路和配置IKAnalyzer一致)

 

1.开发特有的分词器,并继承solr中的类BaseTokenizerFactory。

例如笔者调整了一个分词器为OBOLowercaseTokenizer

类层次结构如下图:

然后编写BOBSolr类,继承BaseTokenizerFactory。

public class BOBSolr extends BaseTokenizerFactory {

	@Override
	public Tokenizer create(Reader input) {
		return new OBOLowercaseTokenizer(input);
	}

}

  

2.在schema.xml中配置

<!-- BOB -->
	<fieldType name="bob" class="solr.TextField">
		<analyzer type="index">
			<tokenizer class="com.baitengsoft.FTDB.analyzer.solr.BOBSolr" />
        </analyzer>
		<analyzer type="query">
			<tokenizer class="com.baitengsoft.FTDB.analyzer.solr.BOBSolr" />
        </analyzer>
	</fieldType>

  

---------------------------------------------

如果你的分词器有特定的参数需要在schema.xml中配置,可以参考IKAnalyzer,IKTokenizerFactory如下所述:

/**
 * 
 */
package org.wltea.analyzer.solr;

import java.io.Reader;
import java.util.Map;

import org.apache.lucene.analysis.Tokenizer;
import org.apache.solr.analysis.BaseTokenizerFactory;
import org.wltea.analyzer.lucene.IKTokenizer;

/**
 * 实现Solr1.4分词器接口
 * 基于IKTokenizer的实现
 * 
 * @author 林良益、李良杰
 *
 */
public final class IKTokenizerFactory extends BaseTokenizerFactory{
	
	private boolean isMaxWordLength = false;
	
	/**
	 * IK分词器Solr TokenizerFactory接口实现类
	 * 默认最细粒度切分算法
	 */
	public IKTokenizerFactory(){
	}
	
	/*
	 * (non-Javadoc)
	 * @see org.apache.solr.analysis.BaseTokenizerFactory#init(java.util.Map)
	 */
	public void init(Map<String,String> args){
		String _arg = args.get("isMaxWordLength");
		isMaxWordLength = Boolean.parseBoolean(_arg);
	}
	
	/*
	 * (non-Javadoc)
	 * @see org.apache.solr.analysis.TokenizerFactory#create(java.io.Reader)
	 */
	public Tokenizer create(Reader reader) {
		return new IKTokenizer(reader , isMaxWordLength());
	}

	public void setMaxWordLength(boolean isMaxWordLength) {
		this.isMaxWordLength = isMaxWordLength;
	}

	public boolean isMaxWordLength() {
		return isMaxWordLength;
	}

}

  isMaxWordLength为其特有的参数。

 

 

 

 

posted on 2012-02-08 16:48  huangfox  阅读(2391)  评论(1编辑  收藏  举报