solr

nutch2.3抓取的网页使用solr建立索引

删除回忆录丶 提交于 2020-03-01 04:01:47
1,安装solr 2,将NUTCH_HOME/runtime/local/conf/schema-solr4.xml复制到SOLR_HOME/excample/solr/collection1/conf/下,并改名为schema.xml,在文件中添加 <field name="_version_" type="long" indexed="true" stored="true"/> 3,启动hbase 如果是hbase 0.94.*的版本需要修改host 官方是这么说的: The following /etc/hosts file works correctly for HBase 0.94.x and earlier, on Ubuntu. Use this as a template if you run into trouble. 127.0.0.1 localhost 127.0.0.1 ubuntu.ubuntu-domain ubuntu 关键是下面这条命令,就会在solr中建立索引 bin/nutch solrindex http://127.0.0.1:8983/solr/ -reindex -crawlId 6vhao 来源: oschina 链接: https://my.oschina.net/u/2494265/blog/524238

Solr分词

こ雲淡風輕ζ 提交于 2020-02-29 10:18:57
Solr版本:4.3.0。 分词器的配置在schema.xml文件,比如如下标签内容: <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" enablePositionIncrements="true" /> <!-- in this example, we will only use synonyms at query time <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/> --> <filter class="solr.LowerCaseFilterFactory"/> </analyzer> <analyzer type="query"> <tokenizer class="solr

solr 分析器

和自甴很熟 提交于 2020-02-29 10:14:15
源https://www.w3cschool.cn/solr_doc Solr 分析器被指定为 schema.xml 配置文件中的<fieldType>元素的子元素(在与 solrconfig. xml 相同的 conf/ 目录中)。 在正常使用情况下,只有类型为 solr.TextField 的字段将指定一个分析器。配置分析器的最简单的方法是使用单个 <analyzer> 元素,它的类属性是一个完全限定的Java 类名。命名的类必须派生自 org.apache.lucene.analysis.Analyzer。例如: <fieldType name="nametext" class="solr.TextField"> <analyzer class="org.apache.lucene.analysis.core.WhitespaceAnalyzer"/> </fieldType> 在这种情况下,单个类 WhitespaceAnalyzer 负责分析指定文本字段的内容并发出相应的令牌。对于简单的情况,如简单的英文散文,这样的单个分析器类可能就足够了。但是通常需要对字段内容进行更复杂的分析。 即使是最复杂的分析要求,通常也可以分解为一系列离散的、相对简单的处理步骤。正如你很快就会发现的那样,Solr 发行版提供了大量的标记器和过滤器,覆盖了你可能遇到的大多数场景

Solr4:Tomcat7下面配置Solr

我是研究僧i 提交于 2020-02-29 09:31:06
前提是已经在Tomcat7下面配置好Solr4.0,详情参考: Solr4:Tomcat7下面配置Solr 1.下载mmseg4j 下载地址: http://code.google.com/p/mmseg4j/downloads/list ,目前mmseg4j的mmseg4j-1.9.0-SNAPSHOT版本支持Solr4.0,但仍然需要做相关改动。 2.解压mmseg4j-1.9.0.v20120712-SNAPSHOT.zip 用到下面文件: mmseg4j-all-1.9.0.v20120712-SNAPSHOT.jar 放到之前安装 $CATALINA_HOME/webapps/solr/WEB-INF/lib/ 目录下 data 目录,建议拷贝下面内容到 $SOLR_HOME\collection1\conf\mm4jdic 3.设置mmseg4j中文分词 修改 $SOLR_HOME/collection1/conf/schema.xml ,在 <types></types> 中增加如下内容: <fieldType name="textComplex" class="solr.TextField" > <analyzer> <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode=

分布式搜索引擎的架构是怎么设计的?

喜夏-厌秋 提交于 2020-02-27 16:01:01
业内目前来说事实上的一个标准,就是分布式搜索引擎一般大家都用elasticsearch (1) es的分布式架构原理能说一下么(es是如何实现分布式的啊) 面试官心里分析 在搜索这块,lucene是最流行的搜索库。几年前业内一般都问,你了解lucene吗? 你知道倒排索引的原理吗?现在早已经out了,因为现在很多项目都是直接用基于lucene的分布式搜索引擎--elasticsearch,简称es. 而现在分布式搜索基本已经成为大部分互联网行业的java系统的标配,其中尤为流行的就是es,前几年es没火的时候,大家一般用solr,但是这两年基本大部分企业和项目都开始转向es了。 所以互联网面试,肯定会跟你聊聊分布式搜索引擎,也就一定会聊聊es,如果你确实不知道,那你真的就out了。 如果面试官问你第一个问题,确实一般都会问你es的分布式架构设计能介绍一下么?就看看你对分布式搜索引擎架构的一个基本理解。 面试的剖析 elasticsearch设计的理念就是分布式搜索引擎,底层其实还是基于lucene的。 核心思想就是在多台机器上启动多个es进程实例,组成了一个es集群。 es中存储数据的基本单位是索引,比如说你现在要在es中存储一些订单数据,你就应该在es中创建一个索引,order_idx,所有的订单数据就都写到这个索引里面去,一个索引差不多就是相当于是mysql里的一张表

Solr 控制台实现数据的增删改查

╄→гoц情女王★ 提交于 2020-02-27 13:53:45
Solr 控制台实现数据的增删改查 简单记录一下 solr 控制台的 CURD 的使用姿势 <!-- more --> I. CURD 在 solr 提供的控制台上,提供了完整的 CURD 的支持;然而在实际使用的时候,却不一定能很顺手,特此记录一下 我们测试的 shema 定义如下 id: string # 默认的全局唯一字段 content_id: long # 文章id title: string # 文章标题 content: string # 文章内容 type: int # 文章类型 create_at: long publish_at: long 1. 添加 进入控制台,选中 Collection, 点击 Documents 我们选择 json 的方式进行添加数据,如下图: 2. 查询 solr 的查询语法比较复杂,这里不展开,只演示一下基本的查询姿势如下图 3. 修改 修改数据和添加的姿势基本一样,区别在于 documents 中,如果没有指定主键,则表示插入数据,并默认生成一个主键;如果指定了主键,且对应的主键不存在,则表示插入数据;若主键存在,则表示更新 4. 删除 删除一个 or 多个数据时,咋一看,在控制台中好像并没有操作的入口,这里确实有必要注意一下,我们的操作界面依然是上面添加/修改的页面 请额外注意,我们选择 DocumentType 为 xml,在

SpringBoot 系列教程 Solr 之文档删除

房东的猫 提交于 2020-02-27 06:59:16
200114-SpringBoot 系列教程 Solr 之文档删除 之前的搜索教程开了个头就没有继续了,现在重新捡回来,至少也把 CURD 的基本操作姿势补全了;本篇主要介绍如何删除数据 <!-- more --> I. 配置 在介绍 demo 之前,需要先安装 solr 环境,搭建 SpringBoot 项目工程,具体的环境搭建过程不细说,推荐参考文档 190510-SpringBoot 高级篇搜索之 Solr 环境搭建与简单测试 在 application.yml 配置文件中红,指定 solr 的域名 spring: data: solr: host: http://127.0.0.1:8983/solr 然后在 solr 中,写入一些数据,供我们删除使用,可以通过控制台的方式写入,也可以通过 190526-SpringBoot 高级篇搜索 Solr 之文档新增与修改使用姿势 这篇文档的 case 添加 { "id":"1", "content_id":1, "title":"一灰灰blog", "content":"这是一灰灰blog的内容", "type":1, "create_at":1578912072, "publish_at":1578912072, "_version_":1655609540674060288}, { "id":"2", "content_id"

返沪第一天,学习不能断,工作还要继续

*爱你&永不变心* 提交于 2020-02-26 17:59:32
返沪第一天 今天是2020年02月19日,是我返沪第一天,早上的体温是36.5,晚上的体温为36.6. 呵呵 -- 正常 说起返沪,海囧有木有。 回沪需要多转(转车三次) 从家开车到高铁站(这可是我第一次开车上高速,虽然我是一个老司机了(驾照到手好多年了)),这速度有点慢哦 乘高铁到成都,高铁都是隔人坐的,人好少。 转地铁到机场(包地铁的感觉有点爽) 飞机是满坐的,疫情也没挡住大家返沪的热情 磁悬浮只有列车员一人,大城市有点点可怕的感觉(呵呵) 回到小区,填写信息,告知自动在家隔离十四天。 以上都是昨天的海囧啦,以下才是主场: 在老家期间,阅读完一本书(非技术的),带回的技术书就翻看了几章,开车可以上路了(驾照大学期间就拿了,但之后从未开过车)。 今天,还未起床,居委会就打电话确认让隔离。 请假也要工作 一个早上三个工作会议(一个项目进度汇报,一个项目任务分配,一个与小伙伴沟通),下午协助公司解决线上线下遇到的一些杂七杂八的技术和非技术的问题。 隔离也要学习 为什么需要分库分表?(学习获取资料) 海量数据,数据库遇到瓶颈时,就需要分库分表。 MySQL 在 InnoDB 存储引擎下创建的索引都是基于 B+ 树实现的,所以查询时的 I/O 次数很大程度取决于树的高度,随着 B+ 树的树高增高,I/O 次数增加,查询性能也就越差。 当我们面对一张海量数据的表时,通常有分区、NoSQL

solr 使用edismax来控制评分

南楼画角 提交于 2020-02-25 22:02:18
如何控制评分 如果设置了sort字段,那么将会按照sort字段的顺序返回结果。 如果没有设置sort字段,那么将会根据相关度打分来排序。也就是说,相关度更高的排在前面。 如何来定制适合自身业务的排序打分规则(boost)呢?经过这段时间的思考与实践,想到了如下三个方法: 1、定制Lucene的boost算法,加入自己希望的业务规则; 2、使用Solr的edismax实现的方法,通过bf查询配置来影响boost打分。 3、在建索引的schema时设置一个字段做排序字段,通过它来影响文档的总体boost打分。 上面每一种方法都有其优劣,下面分析一下各自的优劣。 第一种方法技术难度要求较高,需要读懂Lucene的boost打分算法,在代码层做定制. 第二种方式就简单不少,不过因为受限于edismax提供的方法,所以有些局限性。 第三种排序可完全消除文本相关性打分的影响,文本检索匹配逻辑只负责打到匹配的项,排序由自定义字段处理。 下面重点看edismax的使用: edismax的理念: edismax中将查询字段和查询词项分开了,如我们在标准用法中使用name:zjf,那么在edismax中,需要在qf中设置查询字段为name,然后在q中输入zjf,注意这里不能加name了,否则没有结果。 这样设计的结果就是,查询词项会去所有的qf列(query field,可以设置多列

Solr的函数查询(FunctionQuery)

偶尔善良 提交于 2020-02-25 21:56:27
作用 通过函数查询让我们可以利用 numeric域的值或者与域相关的的某个特定的值的函数,来对文档进行评分。 如何使用 这里主要有两种方法可以使用函数查询,这两种方法都是通过solr http 接口的: 1、内嵌在正常的solr查询表达式中。即,将函数查询写在 q这个参数中,这时候,我们使用_val_将函数与其他的查询加以区别。至于具体怎样使用,请读者留意下面的例子。 2、使用明确为函数查询的参数,比如说dismax中的bf(boost function)这个参数。 注意:bf这个参数是可以接受多个函数查询的,它们之间用空格隔开,它们还可以带上权重。所以,当我们使用bf这个参数的时候,我们必须保证单个函数中是没有空格出现的,不然程序有可能会以为是两个函数。 例如:q=dismax&bf=ord(popularity)^0.5 recip(rord(price),1,1000,1000)^0.3 函数格式 目前,function query 并不支持 a+b 这样的形式,我们得把它写成一个方法形式,这就是 sum(a,b) 函数详解 1、constant:支持有小数点的常量, 例如,1.5,查询表达式就是:_val_:1.5 2、fieldvalue,这个函数将会返回numeric field的值,这个域必须是indexd的,非multiValued的。格式很简单,就是该域的名字