欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

IKanalyzer中文分词器

程序员文章站 2022-05-09 13:50:37
...

安装

cp IKAnalyzer2012FF_u1.jar  /usr/local/tomcat/webapps/solr/WEB-INF/lib/ <!--复制jar包到tomcat的solr工程下 -->

mkdir /usr/local/tomcat/webapps/solr/WEB-INF/classes <!-- 在solr的工程下的WEB-INF创建一个classes,需要把IKAnalyzer2012FF_u1的配置文件放在classpath下 -->

cp ext_stopword.dic IKAnalyzer.cfg.xml  mydict.dic /usr/local/tomcat/webapps/solr/WEB-INF/classes/ <!-- 把分词器的配置文件复制到classes下面 -->

修改xml文件

cd solrhome <!--打开之前设置的solrhome目录 -->
cd collection1/conf
vim schema.xml <!--打开配置文件 -->

<!-- 定义一个filedType-->
<fieldType name="text_ik" class="solr.TextField">
  <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>

<!--复制一份业务域:示例 -->
<field name="item_title" type="text_ik" indexed="true" stored="true"/>
<field name="item_sell_point" type="text_ik" indexed="true" stored="true"/>
<field name="item_price"  type="long" indexed="true" stored="true"/>
<field name="item_image" type="string" indexed="false" stored="true" />
<field name="item_category_name" type="string" indexed="true" stored="true" />


<field name="item_keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/>
<!--复制域, 当添加 item_keywords 这个字段时候,会自动添加到 item_title item_sell_point 。。。。 上,  本质上是对搜索的优化,任意一个域中只要包含这个字段都可以搜索出来 -->
<copyField source="item_title" dest="item_keywords"/>
<copyField source="item_sell_point" dest="item_keywords"/>
<copyField source="item_category_name" dest="item_keywords"/>

测试

IKanalyzer中文分词器

SolrJ

约束

            <dependency>
                <groupId>org.apache.solr</groupId>
                <artifactId>solr-solrj</artifactId>
                <version>${solrj.version}</version>
            </dependency>

测试类

    @Test
    public void SolrJdemo1() throws SolrServerException, IOException{
        SolrServer server = new HttpSolrServer("http://192.168.25.135:8080/solr/collection1" );//Solr服务对象
        SolrInputDocument document = new SolrInputDocument();//solr文档对象
        <!-- 在文档中添加Schem.xml中设置的域-->
        document.addField("id", "demo1");
        document.addField("item_title", "商品1");
        document.addField("item_price", 1000);
        server.add(document); //文档写入索引库
        server.commit();//事务提交
    }