solr的简单使用


Solr是一个高度可伸缩、专注于信息检索的、能够处理海量信息的、以自然语言文本为中心的企业级搜索引擎。

它具备易于使用和配置、高性能、可伸缩性、支持多种数据源和查询方式等优点,但相对于Elasticsearch可能在处理小型数据集时稍显缓慢。

solr的核心特性
包括先进的全文搜索功能
基于标准的开放接口(通过XML、JSON和HTTP进行查询和获取结果)
高度可扩展和容错性(能够有效地复制到另一个Solr搜索服务器)
通过HTML页面管理以及灵活的插件体系
强大的数据导入功能,能够将数据库和其他结构化数据源导入、映射和转化。
在使用solr run进行单机运行时,可以通过命令行工具启动solr并指定相关参数。停止solr可以使用solr stop -all命令。

若需要下载solr7.6.0版本并创建新的core,可以按照以下步骤操作:

  1. 在/server/solr目录下创建一个新的文件夹,命名为newcore。

  2. 找到/server/solr/configsets/_default目录下的conf文件夹,并将其拷贝到/server/solr/newcore目录下。

  3. 接入数据库数据,并在solrconfig.xml文件中进行相应的配置。

中文分词
对于中文分词,Solr支持多种分词器,包括IK Analyzer、Jieba分词器和HanLP分词器等。在Solr中,可以通过配置fieldType来选择不同的分词器。例如,使用IK Analyzer作为分词器时,可以在schema.xml文件中添加以下配置:

<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
    <analyzer>
        <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true" conf="ik_synonym.txt"/>
    analyzer>
fieldType>

在使用同义词和停用词时,可以根据需求进行配置。例如,对于IK分词器,可以使用以下配置:


<fieldType name="text_ik" class="solr.TextField">
    <analyzer type="index">
        <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false" conf="ik.conf"/>
        <filter class="solr.LowerCaseFilterFactory"/>
      <filter class="solr.StopFilterFactory" words="stopwords.txt"/>
    analyzer>
    <analyzer type="query">
        <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true" conf="ik.conf"/>
        <filter class="solr.LowerCaseFilterFactory"/>
      <filter class="solr.StopFilterFactory" words="stopwords.txt"/>
    analyzer>
fieldType>

SolrJ库
Solr还提供了Java API,使得开发人员可以使用Java语言编写Solr查询,从而简化了与Solr的交互过程,并提高了开发效率。通过使用SolrJ,开发人员可以轻松地构建、执行和管理Solr查询,同时还可以利用SolrJ提供的其他功能,如分页和排序等。

以下是使用示例:

import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.params.ModifiableSolrParams;

import java.io.IOException;

public class SolrQueryExample {
public static void main(String[] args) throws IOException, SolrServerException {
// 创建Solr客户端
SolrClient solrClient = new HttpSolrClient.Builder(“http://localhost:8983/solr”).build();

    // 创建Solr查询对象
    SolrQuery query = new SolrQuery();

    // 设置查询条件
    query.setQuery("title:Java");

    // 设置分页参数
    query.setStart(0);
    query.setRows(10);

    // 执行查询并获取结果
    QueryResponse response = solrClient.query(query);

    // 处理查询结果
    System.out.println(response);
}

}
以上是对Solr的简要介绍,它作为一个高度可伸缩的信息检索引擎,为企业提供了强大的搜索能力和灵活性。无论是在大规模数据处理还是中文分词方面,Solr都能够满足各种需求。

一些错误和解决方案
1.Error loading class ‘solr.DataImportHandler’ 没有jar包:dataimporthandler 解决方案:把solr/dist/solr-dataimporthandler-6.0.1.jar复制到solr/server/solr-webapp/webapp/WEB-INF/lib目录下;

你可能感兴趣的:(solr,lucene)