格式编码为UTF-8
schema.xml配置和同义词词库的配置
中文,这里采用mmseg4j作为分词器,同义词一般只要进行查询的配置就可以了,同义词的配置一般位于分词器的后面
下面是中文的同义词和分词的配置
<fieldType name="text_mmseg4j_simple" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="simple" dicPath="my-ext-dic" />
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="simple" dicPath="my-ext-dic" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
如果是英文,大体同上面的配置,主要区别是分词器的选择
下面是英文的分词器和同义词的配置
<fieldType name="text_mmseg4j_simple" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
词库目录的位置
分词词库是首先取的core或者collection的实例目录
单节点:
E:\BaiduYunDownload\solr\solrLocal\solr-5.3.1\server\solr\testCollection
参数1:synonyms:指向同义词库
ignoreCase:是否区分大小写,默认为false
expand:默认是true,决定是否扩充到所有同意义的,相同的同义词, 如果为false,则只有列表中的第一个生效
format:默认是solr,控制同义词怎样被解析,目前solr(SolrSynonymParser)和wordnet(WordnetSynonymParser),是被支持的,或者你也可以定义一个支持你自己的SynonymMap.Buider的子类的名字
analyzer:可选的,默认是WhitespaceTokenizerFactory
data/chars.dic是单字与语料中的频率,一般不用改动,一般不用改动,1.5版本中已经加到mmseg4j的jar里了,我们不需要关心它,当然你在词库目录放这个文件可能覆盖它。
data/units.dic是单字的单位,默认读jar包里的,你可以自定义覆盖它。
data/words.dic是词库文件,一行一词,当然你也可以使用自己的
data/wordsxxx.dic 目前应该支持多个词库文件,data目录(或你定义的目录)下读到"words"前缀且".dic"为后缀的文件。如data/words-my.dic