精华内容
下载资源
问答
  • solr的使用

    2019-09-25 05:26:37
    二, mac下使用 下载二进制包后,解压 step 1 进入solr目录: cd solr-8.2.0 step 2 进入bin目录: cd bin step 3 启动: ./solr start step 4 查看: 网址输入127.0.0.1:8983 三,...

    一,下载,安装 

       https://lucene.apache.org/solr/

     

    二, mac下使用

        下载二进制包后,解压 

    step 1 进入solr目录: cd solr-8.2.0

    step 2 进入bin目录: cd bin

    step 3 启动: ./solr start

    step 4 查看: 网址输入127.0.0.1:8983 

     

    三,创建核心

      方法 一: create   

    ./solr create -c core1

     

      方法 二: create_core 

    ./solr create_core -c core2

     

    四,删除核心

      ./solr delete -c core1

     

     


    1. 添加文档索引

      ./post -c [core_name] [file_name]

     2. 查询

     q.

      name:yuyi

    转载于:https://www.cnblogs.com/yyagrt/p/11423249.html

    展开全文
  • Solr的使用

    千次阅读 2017-01-06 11:21:03
    1、 schema.xml ...在solr中域必须先定义后使用。 1.1filed Name:域名称 Type:域类型 Indexed:是否索引 Stored:是否存储 Required:是否必须 multiValued:是否是多值,存储多个值时设置为true,so

    1、 schema.xml

    schema.xml文件在SolrCore的conf目录下,在此配置文件中定义了域以及域的类型等一些配置。在solr中域必须先定义后使用。

    1.1filed

    <field name="id"type="string" indexed="true" stored="true"required="true" multiValued="false" />

    Name:域的名称

    Type:域的类型

    Indexed:是否索引

    Stored:是否存储

    Required:是否必须

    multiValued:是否是多值,存储多个值时设置为true,solr允许一个Field存储多个值,比如存储一个用户的好友id(多个),商品的图片(多个,大图和小图)

    1.2 dynamicField(动态域)

    <dynamicFieldname="*_s" type="string" indexed="true" stored="true" />

    Name:动态域的名称,是一个表达式,*匹配任意字符,只要域的名称和表达式的规则能够匹配就可以使用。

    例如:搜索时查询条件[product_i:钻石]就可以匹配这个动态域,可以直接使用,不用单独再定义一个product_i域。

    1.3uniqueKey

    <uniqueKey>id</uniqueKey>

    相当于主键,每个文档中必须有一个id域。

    1.4copyField(复制域)

    <copyField source="cat"dest="text"/>

    可以将多个Field复制到一个Field中,以便进行统一的检索。当创建索引时,solr服务器会自动的将源域的内容复制到目标域中。

    source:源域

    dest:目标域,搜索时,指定目标域为默认搜索域,可以提高查询效率。

     

    定义目标域:

    <field name="text"type="text_general" indexed="true" stored="false"multiValued="true"/>

    目标域必须要使用:multiValued="true"

    1.5fieldType(域类型)

    <fieldType name="text_general" 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.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
    	<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
    	<filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
    </fieldType>
    


    name:域类型的名称

    class:指定域类型的solr类型。

    analyzer:指定分词器。在FieldType定义的时候最重要的就是定义这个类型的数据在建立索引和进行查询的时候要使用的分析器analyzer,包括分词和过滤。

    type:index和query。Index 是创建索引,query是查询索引。

    tokenizer:指定分词器

    filter:指定过滤器

    2、配置中文分词器

    使用IKAnalyzer中文分析器

    第一步:把IKAnalyzer2012FF_u1.jar添加到solr/WEB-INF/lib目录下。

    第二步:复制IKAnalyzer(IK Analyzer 2012FF_hf1)的配置文件(IKAnalyzer.cfg.xml)和自定义词典(ext.dic)和停用词词典(stopword.dic)到solr的solr/WEB-INF/classes目录下。

    复制IK分词器配置文件、自定义词典、停用词词典

    粘贴到Tomcat的solr的/WEB-INF/classes目录下


    第三步:在schema.xml中添加一个自定义的fieldType,使用中文分析器。


    <!-- IKAnalyzer-->
        <fieldType name="text_ik" class="solr.TextField">
          <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
        </fieldType>
    
    第四步:在schema.xml中添加field,指定field的type属性为text_ik
    <!--IKAnalyzer Field-->
    <field name="content_ik" type="text_ik" indexed="true" stored="true" /> 
    

    第五步:重启tomcat

    http://localhost:8080/solr



    3、配置业务Field

    要使用solr实现网站中商品搜索,需要 将mysql数据库中数据在solr中创建索引。 

    第二步. 需要在solr的schema.xml文件定义要存储的商品Field。

    第一步.. 需要把MySQL的数据导入到solr索引库中

    第三步.. 开发搜索功能


    3.1将数据导入到数据库

    3.2定义Field

    先确定定义的商品document的Field域有哪些?

    可以根据mysql数据库中商品表的字段来确定:


    3.3Schema.xml中配置业务域

    <!--product-->
    <field name="product_name" type="text_ik" indexed="true" stored="true"/>
    <field name="product_price"  type="float" 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_catalog_name" type="string" indexed="true" stored="true" />
    
    <field name="product_keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/>
    <copyField source="product_name" dest="product_keywords"/>
    <copyField source="product_description" dest="product_keywords"/>
    
    3.4dataimportHandler插件

    使用dataimport插件批量导入数据。

    第一步:把dataimport插件依赖的jar包(solr-4.10.3\dist下的solr-dataimporthandler-4.10.3.jar和solr-dataimporthandler-extras-4.10.3.jar)添加到solrcore(collection1\lib)中, 还需要mysql的数据库驱动。

    第二步:配置solrconfig.mxl文件,添加一个requestHandler。

     <requestHandler name="/dataimport" 
    class="org.apache.solr.handler.dataimport.DataImportHandler">
        <lst name="defaults">
          <str name="config">data-config.xml</str>
         </lst>
     </requestHandler> 
    

    第三步:创建一个data-config.xml,保存到collection1\conf\目录下

    <?xml version="1.0" encoding="UTF-8" ?>  
    <dataConfig>   
    <dataSource type="JdbcDataSource"   
    		  driver="com.mysql.jdbc.Driver"   
    		  url="jdbc:mysql://localhost:3306/lucene"   
    		  user="root"   
    		  password="root"/>   
    <document>   
    	<entity name="product" query="SELECT pid,name,catalog_name,price,description,picture FROM products ">
    		 <field column="pid" name="id"/> 
    		 <field column="name" name="product_name"/> 
    		 <field column="catalog_name" name="product_catalog_name"/> 
    		 <field column="price" name="product_price"/> 
    		 <field column="description" name="product_description"/> 
    		 <field column="picture" name="product_picture"/> 
    	</entity>   
    </document>   
    
    </dataConfig
    

    第四步:重启tomcat(startup.bat)



    第五步:点击“execute”按钮导入数据

     

    注意:导入数据前会先清空索引库,然后再导入。


    3.5Solr的查询语法

    1. q: 查询关键字,必须的。

    请求的q是字符串,如果查询所有使用*:*

    2.fq:(filter query)过滤查询

    作用:在q查询符合结果中同时是fq查询符合的

    请求fq是一个数组(多个值)

    过滤查询价格从1到20的记录。


    也可以使用“*”表示无限,例如:

    20以上:product_price:[20 TO *]

    20以下:product_price:[* TO 20]

    也可以在“q”查询条件中使用product_price:[1TO 20],

    如下效果和上面一样:


    3.  sort:  排序,desc代表降序,asc代表升序

    按照价格升序排


    4.start:页显示使用,开始记录下标,从0开始

    rows: 指定返回结果最多有多少条记录,配合start来实现分页。


    5.fl:(Field List)指定返回那些字段内容,用逗号或空格分隔多个。


    显示商品id、商品名称、商品分类名称

    6.df:指定默认搜索Field


    7.wt:(writer type)指定输出格式,可以有 xml, json, php, phps


    8.hl:是否高亮 ,设置高亮Field,设置格式前缀和后缀。


    展开全文
  • lucene,solr的使用

    2017-10-11 09:12:06
    lucene,solr的使用lucene,solr的使用lucene,solr的使用lucene,solr的使用lucene,solr的使用lucene,solr的使用lucene,solr的使用lucene,solr的使用lucene,solr的使用lucene,solr的使用lucene,solr的使用
  • solr的使用(一) solr的安装 本次使用的环境为tomcat9.0.22 ,jdk1.8 ,solr4.10.3 1.首先将上述tar包上传至linux /usr/local 文件夹下,如图 2.在此目录下创建solr 文件夹,将solr.4.10.3.tar ,IKAnalyzer.zip ...

    solr的使用(一)

    solr的安装

    本次使用的环境为tomcat9.0.22 ,jdk1.8 ,solr4.10.3
    1.首先将上述tar包上传至linux /usr/local 文件夹下,如图
    环境 安装路径
    2.在此目录下创建solr 文件夹,将solr.4.10.3.tar ,IKAnalyzer.zip 上传至solr文件夹中, tar -zxvf solr.4.10.3.tar 将solr解压。
    准备将solr 放入单独的tomcat 中 运行,我们将tomcat也解压到solr文件夹下,结果如下图:
    solr 文件夹下目录结构
    经过本人尝试,此时tomcat 中不能进行部署项目,原因是因为端口占用,我们将此tomat 进行单独的配置。
    输入 vi /etc/profile

    在这里插入图片描述配置如下所示:

    #tomcat1
    TOMCAT_HOME_1=/usr/local/tomcat/apache-tomcat-9.0.22
    CATALINA_HOME_1=/usr/local/tomcat/apache-tomcat-9.0.22
    CATLINA_BASE_1=/usr/local/tomcat/apache-tomcat-9.0.22
    export TOMCAT_HOME_1  CATALINA_HOME_1  CATALINA_BASE_1
    
    
    #tomcat2_solr
    TOMCAT_HOME_solr=/usr/local/solr/apache-tomcat-9.0.22
    CATALINA_HOME_solr=/usr/local/solr/apache-tomcat-9.0.22
    CATLINA_BASE_solr=/usr/local/solr/apache-tomcat-9.0.22
    export TOMCAT_HOME_solr  CATALINA_HOME_solr  CATALINA_BASE_solr
    

    还需要进入tomcat_solr 的bin目录 中,对catalina.sh 进行修改
    主要 对8080 8009 8005 这几个端口进行 更改,不与其他 tomcat 的端口 冲突就可以

    这样就不会 发生不能部署 项目的问题了,我们正式开始solr的使用

    solr配置

    进入/usr/local/solr/solr-4.10.3/example/webapps文件夹中
    在这里插入图片描述
    此文件 夹中有一个solr.war 文件
    在这里插入图片描述
    我们将solr.war 复制到 /usr/local/solr/apache-tomcat-9.0.22/webapps/

    执行语句 :cp solr.war /usr/local/solr/apache-tomcat-9.0.22/webapps/
    在这里插入图片描述
    我们准备自己将solr.war 解压 ,先创建一个solr 文件夹用来解压solr.war
    在这里插入图片描述
    执行 unzip solr.war -d solr
    在这里插入图片描述
    然后我们进入/usr/local/solr/solr-4.10.3/example/ 下

    cd /usr/local/solr/solr-4.10.3/example/
    在这里插入图片描述
    在这个文件夹中有一个lib文件夹 ,是用来方jar 包的 ,里面有一个ext文件夹,我们进入此文件夹中
    在这里插入图片描述
    在这里插入图片描述
    将ext 中所有的jar包复制到/usr/local/solr/apache-tomcat-9.0.22/webapps/solr/WEB-INF/lib

    执行 :cp * /usr/local/solr/apache-tomcat-9.0.22/webapps/solr/WEB-INF/lib
    在这里插入图片描述
    此时我们需要创建一个solr家,在/usr/local/solr文件夹中,名字可以自定义,不必使用solrhome
    在这里插入图片描述
    此时进入 /usr/local/solr/solr-4.10.3/example 中 ,将 solr 文件夹复制到 /usr/local/solr/solrhome中 ,solrhome不必提前创建
    执行 : cp solr /usr/local/solr/solrhome
    在这里插入图片描述
    进入 /usr/local/solr/apache-tomcat-9.0.22/webapps/solr/WEB-INF 中,
    在这里插入图片描述
    有一个web.xml文件
    对其进行编辑
    vi web.xml

    在这里插入图片描述
    在42行左右 如上图,将红框中的路径改成自己的solrhome 路径
    此时执行tomat ,访问localhost:xxxx/solr 就可以看到以下页面
    在这里插入图片描述

    展开全文
  • Solr的使用规范

    2020-01-06 08:05:09
    在我们使用solr进行搜索时候,搜索结果是按照什么规则而展示出来,我们都知道solr使用分词器进行分词,每一次进行搜索或者是导入数据时候都会触发这个分词器,评分高就会在越前面,那么solr是如何进行...

    Solr权重

    在我们使用solr进行搜索的时候,搜索结果是按照什么规则而展示出来的,我们都知道solr是使用分词器进行分词的,每一次进行搜索或者是导入数据的时候都会触发这个分词器,评分高的就会在越前面,那么solr是如何进行评分的呢?下面我们就来说一下solr权重。

    solr如何控制评分
    solr使用了Lucene的内核,同时也继承了Lucene的打分规则。
    下面我们来说一下solr内改变打分规则的几种方法:
    1.配置solr的solrconfig.xml中的edismax,来改变Boost打分规则(推荐);
    在这里插入图片描述
    2. 在solr中的schema中增加一个字段,该字段专门用于排序(推荐);
    在这里插入图片描述3. 自写一个solr的评分规则;

    edismax的理念:
    edismax中将查询字段和查询词项分开了,如我们在标准用法中使用name:zjf,那么在edismax中,需要在qf中设置查询字段为name,然后在q中输入zjf,注意这里不能加name了,否则没有结果。

    这样设计的结果就是,查询词项会去所有的qf列(query field,可以设置多列,也可以配置为每列配置权重)上进行查询,如果要针对每个字段有不同的查询,如name:zjf,age:30,那么需要将其中一个移入到fq中,但是注意,fq中的查询是不影响评分的。这也是edismax的理念。满足常用的搜索场景。

    edismax的常用参数
    q和fq来自标准查询,也经常使用。

    edismax扩展的有:

    1. qf:query
      field。q中的词项要在哪些字段上执行查询。可以设置多列以及每一列的权重。如果没有设置,那么将会使用df默认字段(一般在配置文件中配置好)。
    2. pf:parse field。pf和qf的格式一样。区别是pf会更加注重短语匹配,也就是说如果输入zjf
      xhj作为查询,那么在配置了pf的字段上,zjf随后出现xhj的文档的评分更高。注意这里只是评分更高,如果想获得更加严格的短语匹配,应该在查询中使用"zjf
      xhj"。
    3. ps:用于配置pf中的词项的短语间隔。可以控制zjf和xhj之间多少个间隔。
    4. bq:接受一个和q一样的查询,它和q的区别是不影响返回的结果集,只会影响排名。
    5. bf:提升函数,通过数学公式来影响评分,而且不局限在qf中的字段。
    6. mm:最小匹配,如果我们不严格要求AND,可以配置mm来定义查询结果集的匹配程度。

    注意:想pf 和qf这种需要查询的字段上,一定要是indexed的。

    举一个栗子:电商类网站(京东)的商品搜索:
    1.在商品名称上出现搜索关键字排序靠前,而内容次之
    2.对近期发布的商品排序靠前
    3.对最近销售多的商品靠前
    综上所述获得一个综合排名

    在知道edismax的理念后让我们来看在solrconfig.xml的SeacrchHandler中的配置:

    bf用函数计算某个字段的权重,如上例子中pub_date发布日期的权重,point比如诚信指数,sale_count销售数量
    bf内字段必须是索引的,bf的函数查看solr api文档
    http://wiki.apache.org/solr/FunctionQuery
    pf查询字段,这样在schema不用制定默认字段
    qf对默认查询增加权重比值,比如标题是content的1.9倍,值越大权重越大
    这样查询就会计算如下的一个综合评分值了

    对于其他排序,比如说价格排序,在schema增加price字段,然后查询是增加sort=price desc就可以了
    ————————————————
    版权声明:本文为CSDN博主「十里长白#」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/shilichangbai/article/details/103836762

    展开全文
  • 23solr的使用

    2018-10-28 17:33:43
    solr部署到Tomcat中 1解压一个新Tomcat 2修改Tomcat端口,默认是8080 ...2》将ROOT中文件都删除,并将solr文件复制到ROOT中。(因为Tomcat默认root工程) 是Tomcat默认solr工程 3》将s...
  • SpringDataSolr的使用 与各种功能案例 <dependencies> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-solr</artifactId> ...
  • spring data solr的使用

    2019-04-23 14:37:01
    solr的安装 1,需要把solr的安装包下载下来,将其解压。 2,把solr服务对应的war包复制到tomcat的webapps目录下: solr-4.10.3\dist\solr-4.10.3.war 3,启动tomcat,目的就是让tomcat对war包进行解压. 关闭...
  • solr的使用详解

    2019-03-28 13:21:14
    一、Solr简介 由于搜索引擎功能在门户社区中对提高用户体验有着重在门户社区中涉及大量需要搜索引擎功能需求,目前在实现搜索引擎方案上有几种方案可供选择: 基于Lucene自己进行封装实现站内搜索。工作量...
  • solr的使用以及配置

    2018-08-08 09:10:01
    使用搜索引擎好处 传统SQL语句实现方式效率低下 搜索引擎运行原理   solr简介 基于LuceneJava搜索引擎服务器程序 功能 数据导入 增量更新 数据检索(全文检索,高亮显示,精确搜索) Solr下载...
  • spring data solr的使用,spring集成solr

    千次阅读 2018-06-17 13:38:19
    Spring Data Solr就是为了方便Solr的开发所研制的一个框架,其底层是对SolrJ(官方API)的封装。 2.使用 solrTemplate 创建maven工程 springdatasolr-demo (1)创建maven工程,pom.xml中引入依赖 &lt;...
  • java中solr的使用

    千次阅读 2016-07-15 14:44:01
    solr在java程序中应用  1.导入jar包  org.apache.solr solr-solrj  程序代码//增加索引库 @Test public void addDocument() throws Exception{ //创建连接 SolrServer solrServer = new ...
  • 开始前 ...说明:solr和lucen更新是同步,请配对使用,lucene用什么版本solr就用什么版本 将下载zip解压,solr本身集成了jetty服务器,可以直接启动 cmd命令启动 然后直接访问:http://127.0...
  • solr 的使用及安装

    千次阅读 2012-12-24 23:13:10
     Solr 是一个开源企业级搜索服务器,底层使用易于扩展和修改Java 来实现。  Solr 主要特性有:强大全文检索功能,高亮显示检索结果,动态集群,数据库接口和电子文档(Word ,PDF 等)处理。而且Solr ...
  • 关于solr和lucene的使用方法,这是传智播客黑马的教学视频
  • 在上一篇搜索学习–Solr全文搜索服务器的使用(一)——SolrJ的使用中,我是直接使用的SolrJ来调用Solr服务器的,而对于熟悉Spring Data系列的同学一定更希望用这种规范的方式去操作它。Spring Data是支持Solr的,只...
  • 本文是延续 Solr的使用 系列,前一篇文章已经讲了 Solr 的部署和数据推送,这里主要以示例方式讲述 Solr 的常见查询语法,同时介绍如何使用 PHP 语言的客户端 solarium 同 Solr 集群进行数据交互。想要详细地了解 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,690
精华内容 3,476
关键字:

solr的使用