随笔分类 -  Solr/Lucene

摘要:背景:要求将一个SQL Server2012版本中的数据库导入到Solr中。数据表中有一字段用来存储birthday日期字段,为nvarchar类型,长度为8,格式为:yyyyMMdd。导入Solr数据结构字段名为birthday,字段类型为date。Solr的date是不认yyyyMMdd格式的日期的,它要求格林威治时间格式,这就要求转换。示范:“19800103”转换为“1980-01-03T00:00:00.000Z”。思路一:在SQL查询数据时做转换,用到cast函数与dateadd函数。因为时区问题。语句如下:select top 100 dateadd(hour,8,cast(Bi 阅读全文
posted @ 2013-12-22 12:14 那些年的事儿 阅读(5416) 评论(0) 推荐(0) 编辑
摘要:Solr查询参数文档可以参考:http://wiki.apache.org/solr/CommonQueryParameters#head-6522ef80f22d0e50d2f12ec487758577506d6002这里主要说一下fq参数的使用。1. 需求一搜索商户信息时,已经可以按指定关键词搜索;但有时需要缩小范围,比如在江苏省范围搜索,或者是苏州市范围内搜索。注意:不是指记录包含“江苏省”、"苏州市“关键词的,而是此记录的行政区域属性值是属于”江苏省“或者是”苏州市"的。2. 实现一1). schema.xml定义如下: 这些编号应该是不需要分词、需要索引... 阅读全文
posted @ 2013-08-06 11:23 那些年的事儿 阅读(6268) 评论(1) 推荐(0) 编辑
摘要:1. 要求将数据库中的数据直接创建到Solr索引中去。先做全部索引,然后定期做增量索引。2. 环境Solr4.4版本,Tomcat7.0版本,Oracle 11g,已经配置好Tomcat与Solr的集成,包括中文分词等。3. 实现步骤3.1 编辑solrconfig.xml文件,在合适位置增加如下代码: data-config.xml3.2 在conf目录下创建data-config.xml文件,内容如下: 注意:上面查询语句中定义的字段必须在schema.xml文件中有相关定义。在我这里,VIEW_DETAIL是一张视图,包含了三张... 阅读全文
posted @ 2013-08-02 14:27 那些年的事儿 阅读(2546) 评论(0) 推荐(0) 编辑
摘要:1. 需求用一台创建索引的主服务器,不停的查询数据,解析数据,然后提交索引;这样导致主服务器的CPU、内存、硬盘IO占用都很高,如果再用它去做查询的话,用户多时肯定影响效率。所以用到了Solr的索引复制功能。就是利用复制的索引去满足查询需求。如果查询用户非常多,那么建立更多的复制即可以满足需求。同时顺便把用户自定义词典也复制过去,这样只需要在主服务器维护词典,它会自动同步到各从服务器,从而保持创建索引与查询时中文分词的一致性。2. 环境硬件:linux服务器两台,IP分别为:192.168.2.91/192.168.2.92软件:Solr 4.1,Tomcat 7模块:两种中文分词器,自己的w 阅读全文
posted @ 2013-03-01 09:33 那些年的事儿 阅读(887) 评论(0) 推荐(0) 编辑
摘要:本文参考:Lucene4.1:利用Filter实现两组关键词组合查询1. 需求根据客户名称,查询客户网络上面的负面信息。如客户名称为”盐城 盐城市“,并自定义负面关键词“贪污 受贿 被曝 曝光 小三 裸照”等,则是要求将包含这些负面关键词且包含客户名称的信息查询出来。注意事项:客户名称可定义多个(10个以内),负面关键词可以定义多个(300个以内)。分析如果只用一个参数q去定义查询,很可能查询字符串长度会溢出,查询q应该形如:((盐城 OR 盐城市) AND 贪污) OR ((盐城 OR 盐城市) AND 受贿)......所以本文采用Filter的形式来解决这一问题。2. 解决步骤步骤一:将 阅读全文
posted @ 2013-02-20 16:31 那些年的事儿 阅读(6180) 评论(0) 推荐(0) 编辑
摘要:使用SolrJ组件创建索引时,以下问题记录一下,涉及文档打分、日期字段处理、多值字段处理等:1. 需要对文档进行打分// 对title/content字段进行处理float boost = IndexTool.getBoost(info.getWebTitle());doc.addField("webTitle", info.getWebTitle(), boost);boost = IndexTool.getBoost(info.getWebContent());doc.addField("webContent", info.getWebContent 阅读全文
posted @ 2013-02-20 16:24 那些年的事儿 阅读(743) 评论(0) 推荐(0) 编辑
摘要:1. 概述正常数据结构一个是需要考虑中文分词,二个是考虑是否索引,是否分词,是否存储等等。下面的示范用到了三种类型的数据:1). 字段需要分词、需要索引、需要存储,如:网页中的标题、内容等字段。2). 字段需要索引,但不需要分词,需要存储,如:网页的发布时间等内容。3). 字段不需要索引,不需要分词,但需要存储,如:引用的图片位置。不存在不需要索引、也不需要分词,也不需要存储的字段,因为这样的字段在Lucene中无意义。2. 示范配置 ... 阅读全文
posted @ 2013-02-20 15:57 那些年的事儿 阅读(1988) 评论(0) 推荐(1) 编辑
摘要:1. 环境Tomcat下载地址:http://tomcat.apache.org/Solr下载地址:http://lucene.apache.org/solr/IKAnalyzer中文分词器下载地址:http://code.google.com/p/ik-analyzer/downloads/listmmseg4j中文分词器下载地址:http://code.google.com/p/mmseg4j/downloads/listLucene下载地址:http://lucene.apache.org/2. 实现步骤1). 建立基本环境参考:Solr4:Tomcat7下面配置Solr2). 配置中文 阅读全文
posted @ 2013-02-20 15:44 那些年的事儿 阅读(1848) 评论(0) 推荐(0) 编辑
摘要:1. 需求 根据客户名称,查询客户网络上面的负面信息。如客户名称为”盐城 盐城市“,并自定义负面关键词“贪污 受贿 被曝 曝光 小三 裸照”等,则是要求将包含这些负面关键词且包含客户名称的信息查询出来。 注意事项:客户名称可定义多个(10个以内),负面关键词可以定义多个(300个以内)。 分析: 如 阅读全文
posted @ 2013-02-20 13:57 那些年的事儿 阅读(1674) 评论(1) 推荐(0) 编辑
摘要:1. 要求 使用explain()方法深入理解搜索结果评分。 使用explain()理解搜索结果评分,通过此方法可以方便地看到评分计算的内部运作,但它需要的开销是和查询操作一样的。 2. 实现代码 package com.clzhang.sample.lucene; import java.io.F 阅读全文
posted @ 2013-01-25 16:42 那些年的事儿 阅读(483) 评论(0) 推荐(0) 编辑
摘要:1. 要求 实现FastVectorHighlighter的高亮查询。Highlighter是流行和广泛使用的Lucene应用,但索引大文件时,Highlighter是相当费时的。可替代Highlighter的FastVectorHighlighter首次出现在Lucene的2.9版本,并提供更快的 阅读全文
posted @ 2013-01-25 16:36 那些年的事儿 阅读(1330) 评论(0) 推荐(1) 编辑
摘要:1. 要求 环境: Lucene 4.1版本/IKAnalyzer 2012 FF版本/mmseg4j 1.9版本功能: 1).高亮查询演示 注意: 此篇文章开始,索引目录将不再使用示范目录,而是使用真实的数据。即LUCENE_INDEX_DIR = "C:\\lucene\\data"改到了LUC 阅读全文
posted @ 2013-01-25 16:28 那些年的事儿 阅读(888) 评论(0) 推荐(0) 编辑
摘要:1. 要求 环境: Lucene 4.1版本/IKAnalyzer 2012 FF版本/mmseg4j 1.9版本功能: 1). 默认查询,显示文档得分及内容 2. 实现代码 package com.clzhang.sample.lucene; import java.io.*; import or 阅读全文
posted @ 2013-01-25 16:24 那些年的事儿 阅读(371) 评论(0) 推荐(0) 编辑
摘要:1. 要求 环境: Lucene 4.1版本/IKAnalyzer 2012 FF版本/mmseg4j 1.9版本 功能: 1). 运行中文分词器进行创建索引工作; 2). 对文本中包括某些关键词的,增加此字段的boost值。 2. 实现代码 package com.clzhang.sample.l 阅读全文
posted @ 2013-01-25 16:19 那些年的事儿 阅读(1488) 评论(0) 推荐(0) 编辑
摘要:1. 要求 环境: Lucene 4.1版本/IKAnalyzer 2012 FF版本/mmseg4j 1.9版本 实现功能: 1).给定输入文本,获取中文拆分词结果;2).给定输入文本,对该文本按一定规则进行权重打分;如:文本中包含指定关键词的频率越高,分值越高。 2. 实现代码 package 阅读全文
posted @ 2013-01-25 16:15 那些年的事儿 阅读(1747) 评论(0) 推荐(0) 编辑
摘要:1. 要求要实现的东西是类似于百度的查询:输入关键词,调用Solr接口,将查询结果按照百度的样式展现出来。页面可以参考百度。JSP命名为index.jsp,放置到根目录下,且index.jsp为默认页。这样设置可以实现比如:http://localhost:8080/?q=%E8%8B%8F%E5%B7%9E格式的调用。2. 引用包整个Solr项目参考的包,本示范程序用到部分3. 结果页面样式4. 实现JSP代码(将百度页面抓取下来改的)= DEFAULT_PAGES的情况,起始页从当前页值-每页页数的下一页算起 result = new int[]{curPage - ... 阅读全文
posted @ 2013-01-24 09:07 那些年的事儿 阅读(3763) 评论(0) 推荐(2) 编辑
摘要:前提,已经安装配置好Tomcat7与Solr4,并且配置好mmseg4j中文分词,具体参考Solr4:Tomcat7下面配置Solr以及Solr4:加入中文分词mmseg4j。1.修改$SOLR_HOME/collection1/conf/schema.xml在fields节点下面的mmseg4j分词器相关配置修改为类似于如下的内容: 2.修改$SOLR_HOME/collection1/conf/synonyms.txt在里面加入你认为中同义词的数据,形如:手机 => 移动电话大陆 => 中国需要将此文件存储为UTF-... 阅读全文
posted @ 2013-01-18 17:15 那些年的事儿 阅读(1974) 评论(0) 推荐(0) 编辑
摘要:前提是已经在Tomcat7下面配置好Solr4.0,详情参考:Solr4:Tomcat7下面配置Solr1.下载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 阅读全文
posted @ 2013-01-18 17:14 那些年的事儿 阅读(1403) 评论(0) 推荐(0) 编辑
摘要:1. 背景多核,官方说法,让你只用一个Solr实例,实现多配置多索引的功能,为不同的应用保留不同的配置。就是每个core都有独立的solrconfig.xml与schema.xml,却依然保留统一与方便的管理。每份索引都可以当做一个独立的应用来对待,甚至可以实现索引的热切换。比如说,为新闻、微博、论坛搜索各建立一个搜索系统,用多核的情况。参考:http://wiki.apache.org/solr/CoreAdmin2. 实现步骤前提已经安装好Tomcat与Solr应用,详情参考阅读Solr4:Tomcat7下面配置Solr1). 停止Tomcat,删除当前$SOLR_HOME下面全部内容,然 阅读全文
posted @ 2013-01-18 17:14 那些年的事儿 阅读(2007) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示