IO & IR 个人作业汇总——康熙

来源:互联网 发布:淘宝商城裂帛 编辑:程序博客网 时间:2024/04/30 12:21

目录

  • 一, 信息组织读后感
    (1)ICT环境下信息组织的任务与挑战——元数据的管理
  • 二, 爬虫报告
    (1) robots协议分析—-以淘宝为例
    (2) Python数据采集 - quotes
    (3) Scrapy框架抓取四川大学公共管理学院教师信息
    (4) 八爪鱼爬取网页数据的简单使用
  • 三, 分词报告
    (1)分词工具介绍与简单实例
  • 四, 文本解析报告
    (1)Apache Tika格式转换的简单使用
  • 五, 索引报告
    (1)Solr+MMSEG4J的简单学习
  • 六, 查询报告
    (1)Solr基础练习

一, 信息组织读后感

ICT环境下信息组织的任务与挑战——元数据的管理

 ICT代表Information 信息,Communications通信Technology技术的意思,ICT即 信息通信技术。随着数字技术的发展,在人们日常看似简单的通信背后其实蕴藏着的巨大信息不断刷新人们对通信与信息的认知看法。信息技术与通信技术之间的关系变得越来越密不可分,并逐渐合成一个概念。ICT在给人类生活带来一系列变革的同时也给我们的信息组织带来全新的挑战,下面,我将以ICT环境下元数据的管理为主题来说明其对信息组织的任务与挑战。

信息组织是利用一定的规则,方法和技术对信息的外部特征和内部内容进行揭示和描述,并按给定的参数和序列公式排列,使信息从无序集转为有序集合的过程。

 元数据是关于数据的数据,而ICT环境下由通信行为产生的信息自然也可以用元数据来描述,充分管理好元数据,从而来加深对信息通信技术的认识。下面,通过一个情景来描述一下在一个通信过程当中,元数据有哪些并且发挥着什么作用:晚上8点,你在自己家中用自己的手机给好友拨打了一个电话,并且持续通话了10分钟。那么,在这个通信行为当中,看似一个简单的过程却包含了最基本和最通用的一些元数据。通话,是我们的主题(Subject)也是我们这一行为的名称(Title),动作的发出者是你,你是这个过程的创造者(Creator)之一,通信地点在家,这个我们的运营商可以通过手机定位很精确的得到这一信息,这可以来说是一个相关资源(Relation),晚上8点,是我们的通话时间(Date),好友对象是另一个资源,通话时间是另一个有效资源,在元数据指导下,我们可以通过运营商得到的信息并根据已知情况结合当前信息技术进而可以推断出一系列潜在的信息,这就是信息技术与通信技术的完美结合。正如上例展示的那样,我们无法得知也没有权利获取通话的内容,但是我们可以利用已知信息和一些信息理论推断出人们的行为习惯从而更好的促进通信行业的发展。而正因此,信息技术的应用在通信领域当中,带来了一系列问题。

挑战一

  首先是元数据的描述。ICT是一个新兴的技术,而对于以往的元数据元素集,在一些情况下它们并不足以或者不够准确的来描述ICT环境当中的实体和元素。因为,并没有专门的一个元数据元素集是用来描述通信领域,即使有像都柏林这样的元素集,但是他们的针对性却不强。从信息组织的角度来说,通过语法,语义和语用上对选择的信息内,外特征进行细化,挖掘,加工整理并归类,无疑来说是一项巨大的挑战。元数据描述不清晰,实体认知不够,对于通信技术和信息技术的发展来说,是一个要解决的基础任务也是一个长期面临的挑战。

挑战二

  另一个不可避免的问题是通信信息的隐私问题即元数据的使用问题。就目前的技术来说,想要得知一个用户的通信信息简直是轻而易举,技术上目前基本没有障碍,所以,我们在利用信息技术的时候,就要明确规定什么数据是可以被获取的,这些获取的数据可以进行怎样的信息技术分析,并且可以用于怎样的商业活动,而这是我们面临的第二挑战。怎样让运营商既可以获取到有价值的用户信息又能做到不侵犯用户的基本权利,从信息组织的角度出发就是对信息资源的主题内容,形式特征,物质特征等进行分析,选择,记录的活动必须是合法的,对于我们信息技术在通信领域内的应用这是我们必须考虑的第二大任务与挑战。

挑战三

  最后一个任务我认为是信息通信领域与其他领域之间元数据的关联问题。一切数据都是可以关联的,关联的实体越多,可扩展的领域越宽,元数据网络就越丰富。但是,通信领域当中运营商们却不得不考虑一个问题,即关联的开放数据越多,信息将越复杂,如何有取舍有针对的对一些元数据进行关联,是信息通信领域技术上和策略上要考虑的问题。

总结

信息和通讯技术是20世纪90年代以来,最具影响力的技术。在此期间,ICT的开放,制造及服务得到迅猛发展,应用越来越广泛。IT 与 CT 均属于信息产业,它们之间有着密不可分的关系,而元数据在两者之间扮演着重要作用,充分挖掘ICT数据,加强元数据管理,促进ICT行业发展,从而推动社会的经济发展。

参考文献:


二, 爬虫报告

(1) robots协议分析—-以淘宝为例

robots协议:

User-agent: * * , 这里的 *代表的所有的搜索引擎种类,是一个通配符
Disallow: /admin/ 这里定义是禁止爬寻admin目录下面的目录
Allow: /tmp 这里定义是允许爬寻tmp的整个目录

淘宝的robots协议摘要如下:
User-agent: Baiduspider
Allow: /articl
Allow: /oshtml
Allow: /wenzhang
Disallow: /product/
Disallow: /
仅允许百度的机器人爬寻article,oshtml,wenzhang下的整个目录,不允许访问product目录下面的目录和其他任何目录

User-Agent: Googlebot
Allow: /article
Allow: /oshtml
Allow: /product
Allow: /spu
Allow: /dianpu
Allow: /wenzhang
Allow: /oversea
Disallow: /
仅允许谷歌的Googlebot爬寻article,oshtml,product,spu,dianpu,wenzhang,oversea下的整个目录,其他目录均不允许访问

User-agent: Bingbot
Allow: /article
Allow: /oshtml
Allow: /product
Allow: /spu
Allow: /dianpu
Allow: /wenzhang
Allow: /oversea
Disallow: /
仅允许Bingbot爬寻article,oshtml,product,spu,dianpu,wenzhang,oversea下的整个目录,其他目录均不允许访问

User-Agent: 360Spider
Allow: /article
Allow: /oshtml
Allow: /wenzhang
Disallow: /
仅允许360的爬寻机器爬寻article,oshtml,wenzhang下的整个目录,其他目录均不允许访问

User-Agent: Yisouspider
Allow: /article
Allow: /oshtml
Allow: /wenzhang
Disallow: /
仅允许Yisouspider爬寻article,oshtml,wenzhang下的整个目录,其他目录均不允许访问

User-Agent: Sogouspider
Allow: /article
Allow: /oshtml
Allow: /product
Allow: /wenzhang
Disallow: /
仅允许Sogouspider爬寻article,oshtml,product,wenzhang下的整个目录,其他目录均不允许访问

User-Agent: Yahoo! Slurp
Allow: /product
Allow: /spu
Allow: /dianpu
Allow: /wenzhang
Allow: /oversea
Disallow: /
仅允许Yahoo! Slurp爬寻product,spu,dianpu,wenzhang,oversea下的整个目录,其他目录均不允许访问

User-Agent: *
Disallow: /
禁止其他搜索引擎访问网站的任何部分

分析:以淘宝对百度搜索引擎的抓取限制为例,百度和淘宝都试图成为中国互联网行业的巨头,拥有最多的用户群体。假设如果淘宝对百度公开图片,店家等详细信息,那么百度利用Baiduspider进行抓取之后,从而将相关信息放到自己的平台,这个时候,百度成为可以提供商品信息的一个站外搜索平台,这跟直接上淘宝搜索无异,势必会影响淘宝的用户,所以淘宝只允许百度爬虫抓取article,oshtml,wenzhang目录下的信息,在给淘宝提供了一定的信息的同时,又可以保证自己牢牢的掌握用户群。

相关链接:
taobao.robots.txt
robots协议百度百科


(2) Python数据采集 - quotes

Scrapy ;Python; Aliyun; MobaXterm
###准备工具:
1.首先要有一个云服务器。我们组选取的是阿里云,在云端完成云服务器的配置和设置。
2.要有一个远程连接客户端。选择易配置的MobaXterm,完成基本的配置,个人文件的建立,创建一个虚拟开发环境并且下载好Scrapy依赖包。

数据采集

  1. 首先,我创建了一个Scrapy项目kx_quotes(图为操作完成后的树图)
  2. 之后编写了两个个spider程序,name分别为kx_quotes 和 kx_quotes01,详细代码如下

    import scrapyclass QuotesSpider(scrapy.Spider):    name = "kx_quotes"    def start_requests(self):      urls = [        'http://quotes.toscrape.com/page/1',        'http://quotes.toscrape.com/page/2',        ]        for url in urls:          yield scrapy.Request(url = url, callback = self.parse)    def parse(self, response):      page = response.url.split("/")[-2]      filename = 'kx-quotes-%s.html' % page      with open(filename, 'wb') as f:        f.write(response.body)        self.log('Saved file %s' % filename)
      import scrapy    class QuotesSpider(scrapy.Spider):      name = "kx_quotes01"      start_urls = [          'http://quotes.toscrape.com/page/1/',              ]      def parse(self, response):      for quote in response.css('div.quote'):          yield {              'text':quote.css('span.text::text').extract_first(),              'author':quote.css('small.author::text').extract_first(),              'tags':quote.css('div.tags a.tag::text').extract(),          }      next_page = response.css('li.next a::attr(href)').extract_first()      if next_page is not None:          next_page = response.urljoin(next_page)          yield scrapy.Request(next_page,callback = self.parse)
  3. 导入spiders文件并执行数据爬取命令,即可以生成html文档和json文档,之后下载即可。

问题和注意事项

  1. MobaXterm 连接不稳定,操作过程中会不断出现连接断开现象,导致许多命令必须重复操作。
  2. 每次进入虚拟环境之前,要注意重新激活
    cd /home/kx/venv //进入寻环境的目录
    source bin/activate // 激活命令
  3. 目录和文件要清楚。在实际操作过程中,新建目录和文件较多,在进行路径下文件操作时,经常因不清楚多个文件之间的层级关系,导致找不到相应的文件和内容。

    4.权限问题。在导入spider程序文件时候,因为权限受阻,导致多次导入失败,最后通过命令[Ubuntu常用命令] ‘chmod abc file’得以解决。
    5.要注意name属性。在执行数据爬寻命令时,输入的name必须是对应的python文件里面定义的name,并且这个name在每个爬虫中都是唯一标识的;不同的爬虫对应不同的name
    6.json文件内容为空。采集到的数据json文件为空,里面没有任何抓取到的数据,通过检查spider代码,文件属性以及输入指令均没有找到解决办法。

相关链接:

[Ubuntu常用命令](http://www.jianshu.com/p/1340bb38e4aa(http://www.jianshu.com/p/1340bb38e4aa)
Linux云服务器下配置Scrapy并抓取数据:http://www.jianshu.com/p/735f32afd70f
课件参考:ccftp.scu.edu.cn:8090/Download/HttpUpload/ShowFile


(3) Scrapy框架抓取四川大学公共管理学院教师信

目录

  • 项目要求
  • 准备步骤
  • 代码编写
  • 结果分析
  • 问题解析
  • 相关链接

一,项目要求

  • 明确目标网址和items:我们要抓取的是四川大学公共管理学院教师主页128位教师信息,包括的item有name(x姓名),title(职称),dep(所属部系),email(邮件),img(图片)以及详情页面的decs(个人简介)
  • 明确分页处理的方法
  • 明确怎么获取详情页信息
  • 会使用xpath来编写数据路径

二 , 准备步骤

  • 在Scrapy当中下载requests库,如果已经下载了的,则可以跳过这个步骤

Scrapy使用request对象来爬取web站点。
request对象由spiders对象产生,经由Scheduler传送到Downloader,Downloader执行request并返回response给spiders。

代码如下:
scrapy install request
  • 新建一个项目,在这里我新建的项目名是teacher。在项目当中会用到pipelines.py,items.py, settings.py以及spider文件夹
scrapy startproject teacher

三, 代码编写

  • 解读四川大学公共管理学院教师主页页面代码:

1.编码方式:
公共管理学院教师主页html
从上图可以看出编码方式采用的是UTF-8,因为抓取的是中文信息,有可能出现乱码或者抓取到的数据是/073801/aj90/ 等形式,这里我们先记住它的编码方式。

2.数据所在目录和路径:

公共管理学院教师主页html

上图中我们可以看到我们要抓取的教师信息都在 //ul[@class=’teachers_ul mt20 cf’]/li 这里面,而且姓名所在的路径是div[@class=’r fr’]/h3/text() ,职称所在路径是div[@class=’r fr’]/p/text() ,邮件所在路径div[@class=’r fr’]/div[@class=’desc’]/p[2]/text() ,部门所在路径div[@class=’r fr’]/div[@class=’desc’]/p[1]/text() ,以及图片对应的链接 div[@class=’l fl’]/a/@href ,图片地址div[@class=’l fl’]/img/@src
在编写路径时,可以用scrapy shell 进行验证,这里不再详述.

3.下一页


可以看到下一页是在li标签的倒数第二个,因此我的下一页路径可以写成 //div[@class=’pager cf tc pt10 pb10 mobile_dn’]/li[last()-1]/a/@href

  • 代码编写
    1.item.py
    我们要在item.y中定义我们的变量名
import scrapyclass TeacherItem(scrapy.Item):    name = scrapy.Field()    title = scrapy.Field()    img = scrapy.Field()    dep = scrapy.Field()    email = scrapy.Field()    url = scrapy.Field()    decs = scrapy.Field()    pass
2.编写teachespider.py文件并导入spider中,完整代码如下:
#coding:utf-8#!/usr/bin/python  # -*- coding:utf-8 -*- import scrapyimport requestsimport urllib2 from scrapy.selector import Selectorfrom teacher.items import TeacherItemimport reimport osfrom urllib2 import urlopenclass TeacherSpider(scrapy.Spider):  name = "teacherspider"                               #爬虫名teacherspider  allowed_domains = ["ggglxy.scu.edu.cn"]  start_urls = [    'http://ggglxy.scu.edu.cn/index.php?c=article&a=type&tid=18',  ]  webdata = requests.get('http://ggglxy.scu.edu.cn/index.php')    webdata.encoding = 'UTF-8'                                     print(webdata.text)                                              #打印出网页html信息  def parse(self, response):    sel = Selector(response)    for teacher in response.xpath("//ul[@class='teachers_ul mt20 cf']/li"):    #爬取数据所在目录      item = TeacherItem()      item['name'] = teacher.xpath("div[@class='r fr']/h3/text()").extract_first()      item['title'] = teacher.xpath("div[@class='r fr']/p/text()").extract_first()      # -*- 图片处理 -*-      img_src = teacher.xpath("div[@class='l fl']/img/@src").extract_first()    #图片路径      teacher_name = "%s.jpg" % (item['name'])                                  #给图片重新命名      img_path = os.path.join("E:\\io&ir\\teacher", teacher_name)               #将图片下载到本地      item['img'] = img_path      item['email'] = teacher.xpath("div[@class='r fr']/div[@class='desc']/p[2]/text()").extract_first()      item['dep'] = teacher.xpath("div[@class='r fr']/div[@class='desc']/p[1]/text()").extract_first()      href = teacher.xpath("div[@class='l fl']/a/@href").extract_first()      request=scrapy.http.Request(response.urljoin(href),callback=self.parse_decs)   #回调抓取详情页信息函数      request.meta['item']=item      yield request          #  -*- 分页处理 -*-    nextpage = sel.xpath("//div[@class='pager cf tc pt10 pb10 mobile_dn']/li[last()-1]/a/@href").extract_first()    if nextpage:        nextpage = 'http://ggglxy.scu.edu.cn/index.php'+nextpage        yield scrapy.http.Request(nextpage, callback=self.parse)        # -*- 详情页信息抓取 -*-  def parse_decs(self,response):    item=response.meta['item']    item['url']=response.url    item['decs']=response.xpath("//div[@class='desc']/text()").extract_first()    yield item
执行爬取命令
scrapy crawl teacherspider -o teacher.xml
3.pipeline.py数据处理和setting.py设置 ( [相关参考](http://www.cnblogs.com/yosha/p/6192569.html))执行上述爬取命令,有可能出现乱码数据,这里介绍两种处理方法:(1)在 scrapy crawl teacherspider -o teacher.json后面再加上 -s FEED-EXPORT-ENCODING=utf-8,下载时数据自动导成为utf-8编码的数据,即
scrapy crawl teacherspider -o teacher.xml -s FEED_EXPORT_ENCODING=utf-8
(2)在pipelines.py中加入如下代码
import codecsclass TeacherPipeline(object):      def __init__(self):        self.file = codecs.open('teacher.xml', 'w', encoding='utf-8')      #文件自动保存为utf-8格式的teacher.xml文件      def process_item(self, item, spider):        line = json.dumps(dict(item),ensure_ascii=False) + '\n'          #print line          #self.file.write(line.decode("unicode_escape"))        self.file.write(line)        return item
同时,在settings.py中启用
# Configure item pipelines# See http://scrapy.readthedocs.org/en/latest/topics/item-pipeline.htmlITEM_PIPELINES = {    'teacher.pipelines.TeacherPipeline': 300,}
设置好之后,执行爬取命令即可得到正常编码数据
scrapy crawl teacherspider
上面两种方法各有优势,根据个人喜好使用。第一种是不需要再编写代码,但是每次执行爬取命令时较复杂;而第二种的话是数据爬取之后的处理操作,更偏向结构化,而且爬取命令更简单,且会自动生成文档。

四,结果解读

![抓取结果显示](http://upload-images.jianshu.io/upload_images/5858538-528261e278e67a40.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)页面成功抓取信息,下载teacher.json文件并打开如下图,刚好128条![teacher.json](http://upload-images.jianshu.io/upload_images/5858538-29bb5897bbac0ef5.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

五,问题解析

  • 路径问题,在写xpath过程当中一定要注意路径,严格按照要求来编写,常见报错
![报错1](http://upload-images.jianshu.io/upload_images/5858538-af59b5419f698404.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)![报错2](http://upload-images.jianshu.io/upload_images/5858538-0a2c206214d32bf4.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)- 编码问题(上面以详述)-包导入问题。不同版本的python 在导入包的时候执行的命令不一样- 分页问题。控制好结束语句,并且要保证将所以数据抓取到。- 传值问题。此项目值,我们要抓取详情页面的信息,要获取详情页url同时还要进行值的提出- 数据顺序。如上数据结构页,可以看到提取到的数据不是按html顺序提取的,应该可以通过控制优先级来控制。

scrapy异步处理Request请求,Scrapy发送请求之后,不会等待这个请求的响应,可以同时发送其他请求或者做别的事情。

六,相关链接

  1. [scrapy shell]http://blog.csdn.net/php_fly/article/details/19555969
  2. [requests]http://www.cnblogs.com/thunderLL/p/6551641.html
  3. [编码问题]http://www.cnblogs.com/yosha/p/6192569.html
  4. [常见错误]http://blog.csdn.net/sunshine_in_moon/article/details/51250023
  5. [参考案例1]http://blog.csdn.net/u011781521/article/details/70196644
  6. [参考案例2]http://www.jianshu.com/p/ad6bf3f2a883?utm_campaign=haruki&utm_content=note&utm_medium=reader_share&utm_source=qq

(4) 八爪鱼爬取网页数据的简单使用

目录

  • 八爪鱼介绍
  • 八爪鱼实例一
  • 八爪鱼实例二

八爪鱼介绍

八爪鱼数据采集系统以完全自主研发的分布式云计算平台为核心,可以在很短的时间内,轻松从各种不同的网站或者网页获取大量的规范化数据,帮助任何需要从网页获取信息的客户实现数据自动化采集,编辑,规范化,摆脱对人工搜索及收集数据的依赖,从而降低获取信息的成本,提高效率。
八爪鱼爬取数据操作简单,可视化高。
直接去官网下载压缩包进行解压缩即可运行。

八爪鱼实例一

以抓取四川大学教师信息为例
打开八爪鱼->我的任务->新建高级任务模式->给文件命名

实例一

下一步,自己进行爬取操作设置

爬取操作

直接下一步:

下一步

启动单机采集:

单机采集

得到如下结果页面:
结果页面.png

八爪鱼实例二

以爬取摔跤吧爸爸的短评为例,步骤同上

Paste_Image.png

Paste_Image.png

Paste_Image.png

Paste_Image.png

爬取结果,只爬取到200条,因为豆瓣采取了反爬措施

爬取结果

具体采集步骤设计可以参考八爪鱼采集教程


三, 分词报告

分词工具介绍与简单实例

目录

  • ICTCLAS
  • IK Analyzer
  • Paoding
  • MMSEG4J
  • Jieba
  • 相关链接

ICTCLAS

1.主要功能包括中文分词;词性标注;命名实体识别;新词识别;同时支持用户词典;
2.ICTCLAS3.0分词速度单机996KB/s,分词精度98.45%,API不超过200KB,各种词典数据压缩后不到3M,是当前世界上最好的汉语词法分析器。
系统平台:Windows
开发语言:C/C++、Java、C#
使用方式:dll调用
演示网址:http://ictclas.org/test.html
开源官网:http://ictclas.org

ICTCLAS的简单应用

用ICTCLAS进行分词比较简单,我们可以直接在其官网中进行操作。以分析金庸的射雕英雄传第十章为例
输入要分析的url或者文本内容:
输入要分析的url或者文本内容

点击开始分析:
分词标注:
分词标注

实体抽取:

实体抽取

词频统计:

词频统计

文本分类:

文本分类

情感分析:

情感分析

关键词提取:
关键词提取

IK Analyzer

  1. IKAnalyzer 是一个开源的,基于java语言开发的轻量级的中文分词工具包。从2006年12月推出1.0版开始,IKAnalyzer已经推出 了3个大版本。最初,它是以开源项目Luence为应用主体的,结合词典分词和文法分析算法的中文分词组件。新版本的IKAnalyzer3.0则发展为 面向Java的公用分词组件,独立于Lucene项目,同时提供了对Lucene的默认优化实现。
  2. 采用了特有的“正向迭代最细粒度切分算法“,具有60万字/秒的高速处理能力。
  3. 采用了多子处理器分析模式,支持:英文字母(IP地址、Email、URL)、数字(日期,常用中文数量词,罗马数字,科学计数法),中文词汇(姓名、地名处理)等分词处理。优化的词典存储,更小的内存占用。
    4.支持用户词典扩展定义,针对Lucene全文检索优化的查询分析器IKQueryParser(作者吐血推荐);采用歧义分析算法优化查询关键字的搜索排列组合,能极大的提高Lucene检索的命中率。

Paoding

1.Paoding(庖丁解牛分词)基于Java的开源中文分词组件,提供lucene和solr 接口,具有极 高效率高扩展性。引入隐喻,采用完全的面向对象设计,构思先进。
2.高效率:在PIII 1G内存个人机器上,1秒可准确分词 100万汉字。
3.采用基于 不限制个数的词典文件对文章进行有效切分,使能够将对词汇分类定义。
4.能够对未知的词汇进行合理解析。
5.仅支持Java语言。
下面举个paoding的小用例:

  • 首先,下载paoding压缩包:,直接解压缩。我放在F:\lucene\paoding目录下。

压缩包

  • 接着配置paoding环境。
    计算机->属性->高级->环境变量->新建一个环境变量,命名为PAODING_DIC_HOME,值设置为F:\lucene\paoding\dic\(你的安装目录\dic\)

配置Paoding环境

  • 接下来打开命令提示框,定位到我们paoding目录下后,windows输入analyzer.bat,linux系统输analyzer.sh

开始分词

  • 之后就可以进行分词操作,直接输入或者粘贴要进行分词的语句,以分号结束

键入:e或:q退出会话 (包括:符号)
键入:?显示帮助(包括:符号) 。

键入?

  • 对这一句话”Paoding(庖丁解牛分词)基于Java的开源中文分词组件,提供lucene和solr 接口,具有极 高效率高扩展性。”进行分词:

分词实例1

  • 从图中可以看出进行了分词,分了22个,耗时15ms。
    analyzer.bat允许对指定的文件进行分词体验。文件以路径名给出可以使绝对地址、相对当前目录的地址,或以classpath:为前缀的类路径地址。

MMSEG4J

MMSEG4J基于Java的开源中文分词组件,提供lucene和solr 接口:
1.mmseg4j 用 Chih-Hao Tsai 的 MMSeg 算法实现的中文分词器,并实现 lucene 的 analyzer 和 solr 的TokenizerFactory 以方便在Lucene和Solr中使用。
2.MMSeg 算法有两种分词方法:Simple和Complex,都是基于正向最大匹配。Complex 加了四个规则过虑。官方说:词语的正确识别率达到了 98.41%。mmseg4j 已经实现了这两种分词算法。

Jieba

特点:
支持三种分词模式:
1.精确模式,试图将句子最精确地切开,适合文本分析;
2.全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义;
3.搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。

算法:
1.基于前缀词典实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图 (DAG)
2.采用了动态规划查找最大概率路径, 找出基于词频的最大切分组合
3.对于未登录词,采用了基于汉字成词能力的 HMM 模型,使用了 Viterbi 算法

jieba简单实例:

  1. jieba是Python的一个分词库。首先要进行安装,键盘Windows+R —>输入cmd–>pip install jieba即可。
  2. 安装Anaconda。

anaconda下载

安装完成之后键盘Windows+R —>输入cmd–>jupyter notebook即可打开jupyter notebook页面

juoyter notebook主页

3.编写要分词的文档test.txt

test.txt

4.直接拖入文档到jupyter notebook主页,upload

上传文件

5.新建python文档new->python

新建python文件

进入页面:

代码输入页

6.输入代码:

import jieba           #导入jiebawith open('test.txt','r')as f:    #打开所需分词文本text.txt    for line in f:                seg=jieba.cut(line.strip(),cut_all = False)    #jieba分词        print('/'.join(seg))

按下Ctrl+Enter,得到如下分词结果:

分词结果

7.上面我们就完成了一个简单的分词。我们还可以进一步进行词频统计。按下Shift+Enter,继续编写如下代码:

from collections import Counter  total = []with open('test.txt','r')as f:        for line in f:        seg_list = jieba.lcut(line.strip(),cut_all = False) # jieba.lcut 可以直接输出列表。        for word in seg_list:            total.append(word)c=Counter(total)        #这里一定要顶格写,否则就进入到上面的for循环里面,出错。for item in c.most_common(5):      #数字5表示提取前5个高频词,可根据需要更改。    print (item[0],item[1])

输出结果如下

词频结果

相关链接

http://ictclas.nlpir.org/
http://baike.so.com/doc/9553551-9898246.html
http://blog.csdn.net/liujihaozhy/article/details/39496745
http://blog.csdn.net/u013070853/article/details/48715183
http://www.oschina.net/question/tag/mmseg4j?show=time
http://baike.so.com/doc/2651801-2800213.html
https://github.com/fxsjy/jieba
http://blog.csdn.net/lengyuhong/article/details/5993316


四, 文本解析报告

Apache Tika格式转换的简单使用

目录

  • Apache Tika介绍
  • Apache Tika实例一
  • Apache Tika实例二
  • Apache Tika实例三
  • 相关链接

一,Apache Tika介绍

Tika是一个内容分析工具,自带全面的parser工具类,能解析基本所有常见格式的文件,得到文件的metadata,content等内容,返回格式化信息。总的来说可以作为一个通用的解析工具。特别对于搜索引擎的数据抓去和处理步骤有重要意义。
使用Tika要下载一个压缩包和一个jar包,下载之后即可。下载地址:http://tika.apache.org/download.html
http://tika.apache.org/download.html
在当前的版本中, Tika提供了对如下文件格式的支持:
- PDF - 通过Pdfbox
- MS-* - 通过POI
- HTML - 使用nekohtml将不规范的html整理成为xhtml
- OpenOffice 格式 - Tika提供
- Archive - zip, tar, gzip, bzip等
- RTF - Tika提供
- Java class - Class解析由ASM完成
- Image - 只支持图像的元数据抽取
- XML

二,Apache Tika实例

(1)配置运行环境
运行Tika首先我们要配置好java环境。下载并配置java jdk。之后在命令提示符中检验java 环境,输入javac 和 java -version

检验java环境
(2)Tika准备包下载之后,我们在命令提示符中输入自己安装tika-app-1.14 jar包的位置,我安装在F盘的ApacheTika
目录下,输入java -jar tika-app-1.14.jar –gui之后,会自动打开GUI界面

java -jar tika-app-1.14.jar –gui

cmd

GUI界面
(2)下面用一个具体的例子来看Tika 是怎样实现格式之间的转换的。你可以打开本地文件或者添加你要解析的url地址。
以四川大学公共管理学院教师主页为例.实现HTML转换成其他格式
1. 点击file-open URL-输入URL-确定
转为metadata格式
2.点击view可以切换成其他的格式

Formatted text

Plain text

main context

xml格式

json格式
3.Tika 对图片的处理主要提供一些原信息,并不能分析出图片内的内容。

三,Apache Tika实例二

使用命令直接进行格式转换
在命令提示中定位到我们安装tika的位置后,输入java -jar tika-app-1.14.jar –help

java -jar tika-app-1.14.jar –help

结果如图所示

tika-help-1

tika-help-2
按Java -jar tika-app-1.14.jar –你想要转换的文件格式(如text) 要转换格式的文件的路径(如C:\tikatest.doc)

Java -jar tika-app-1.14.jar –text C:\tikatest.doc
即可得到反馈结果,其他格式方法一样。

### 四, Apache Tika实例三
在其他工程中使用Tika,这里以eclipse为例
新建一个要转换格式的文件,我把它放在C盘下

要转换的文件

新建一个java项目->导入tika-app-1.14.jar包->在src下面新建一个java文件->在javaw文件中编写代码->测试结果->生成转换后的文件

新建java项目-导入包-创建.java文件
写一个简单的测试例子,在test.java文件中写入如下代码

package Tika;import java.io.File;  import org.apache.tika.Tika;  import java.io.*;public class test {    public static void main(String[] args) throws Exception{        //二进制文件路径        String fileName="c:/Tikatest.txt";        //二进制文件        File file1 = new File(fileName);        //通过tika获取文件内容        Tika tika = new Tika();        String filecontent = tika.parseToString(file1);        //打印文件内容        System.out.println("Extracted Content: " + filecontent);        try{            //要转换到的文件            File file =new File("c:/tikatest.doc");            //文件不存在就新建            if(!file.exists()){                file.createNewFile();            }            //把二进制文件内容写入doc文件            FileWriter fw = new FileWriter(file.getAbsoluteFile());            BufferedWriter bw = new BufferedWriter(fw);            bw.write(filecontent);            bw.close();            System.out.println("Done");        }catch(IOException e){            e.printStackTrace();        }    }}

运行,结果如下:

运行结果
接下来,我们可以打开你存放转换后的文件的位置,可以看到生成了一个 你想转换成的文件

转换成功
打开有如下显示,则说明转换成功
转换成功.png

五,相关链接

https://tika.apache.org/download.html
http://blog.csdn.net/zwx19921215/article/details/24779371
http://blog.csdn.net/gyy823/article/details/20405057
http://www.jianshu.com/p/2a6ad1941788?utm_campaign=haruki&utm_content=note&utm_medium=reader_share&utm_source=qq

GUI界面


五, 索引报告

Solr+MMSEG4J的简单学习

目录

  • solr介绍
  • MMSEG4J介绍
  • 准备工具
  • solr环境搭建
  • 分词方法与效果分析
  • 分词结果提交
  • 词云分析
  • 参考链接

一,solr介绍

Apache Solr 是一个开源的搜索服务器。Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现。Apache Solr 中存储的资源是以 Document 为对象进行存储的。每个文档由一系列的 Field 构成,每个 Field 表示资源的一个属性。Solr 中的每个 Document 需要有能唯一标识其自身的属性,默认情况下这个属性的名字是 id,在 Schema 配置文件中使用:id进行描述。

二,MMSEG4J介绍

mmseg4j 是用 Chih-Hao Tsai 的 MMSeg 算法实现的中文分词器。并实现了 lucene 的 analyzer 和 solr 的 TokenizerFactory 以方便在 Lucene 和 Solr 中使用。
对 lucene 来说 ,mmseg4j 有以下四个 analyzer:SimpleAnalyzer、ComplexAnalyzer、MaxWordAnalyzer、MMSegAnalyzer。前面三个都是继承 MMSegAnalyzer,MMSegAnalyzer 默认使用 max-word 方式分词。四个分次类涉及到了三个分词方法:Simple、Complex、max-word。

三,准备工具(不用tomcat)

(1)solr安装包。官方下载地址http://www.apache.org/dyn/closer.lua/lucene/solr/6.5.1 。solr下载有三个包,不同系统下载不同的包,我是windows本地搭建进行分词,用的是jetty容器 ,在本地运行,下的是solr-6.5.1 .zip文件。
Solr 程序包 的目录结构
- build :在solr 构建过程中放置已编译文件的目录。
- client :包含了一些特定语言调用Solr 的API 客户端程序,目前只有Ruby 可供选择,Java 客户端叫SolrJ 在src/solrj 中可以找到。
- dist :存放Solr 构建完成的JAR 文件、WAR 文件和Solr 依赖的JAR 文件。
- example :是一个安装好的Jetty 中间件,其中包括一些样本数据和Solr 的配置信息。
- example/etc :Jetty 的配置文件。
- example/multicore :当安装Slor multicore 时,用来放置多个Solr 主目录。
- example/solr :默认安装时一个Solr 的主目录。
- example/webapps :Solr 的WAR 文件部署在这里。
- src :Solr 相关源码。
- src/java :Slor 的Java 源码。
- src/scripts :一些在大型产品发布时一些有用的Unix bash shell 脚本。
- src/solrj :Solr 的Java 客户端。
- src/test :Solr 的测试源码和测试文件。
- src/webapp :Solr web 管理界面。管理界面的Jsp 文件都放在web/admin/ 下面,可以根据你的需要修改这些文件。

(2)MMSEG4J分词工具包下载解压,我用的是mmseg4j 2.3.0版本
(3)目录安装:将solr安装在F:/solr/solr-6.5.1目录下,将MMSEG4J安装在F:/MMSEG4J目录下

F:/solr/solr-6.5.1
F:/MMSEG4J

注意:solr版本与mmseg4j版本一定要对应,否则易出问题。我这里用的都是最新的版本。

四,solr环境搭建

(1)在tomcat服务器下运行
tomcat9.0下载并解压 http://tomcat.apache.org/download-90.cgi, 按安装过程一步一步,我默认使用给定的端口号8080。
tomcat和solr的具体配置过程:
- 将solr-6.5.1\server\solr-webapp下的webapp文件夹拷贝到tomcat\webapps目录下,并将webapp重命名为solr(可以重命名为取任意名称)。
- 将solr-6.5.1\server\lib\ext下的所有jar包拷贝到tomcat\webapps\solr\WEB-INF\lib下
- 在WEB-INF下创建一个classses文件夹,并将solr-6.5.1\server\resources下的log4j.properties配置文件拷贝到classes文件夹下
- 在tomcat\webapps\solr下创建文件夹solrhome(可任意取名),将solr-6.5.1\server\solr下的所有内容拷贝到solrhome下面,此时tomcat\webapps\solr和tomcat\webapps\solr\solrhome文件夹目录结构如图

tomcat\webapps\solr.png

tomcat\webapps\solr\solrhome.png
修改tomcat\webapps\solr\WEB-INF\web.xml,找到图示代码进行修改(注释掉),箭头所指的地方改成自己定义的solrhome所在的路径。

web.xml
运行tomcat,访问http://localhost:8080/solr/index.html ,出现404错误。

404错误
这个问题改了许久没有成功,因此采用了第二种方法基于jetty容器的运行。

(2)solr基于jetty容器的运行
1. 在命令提示窗口定位到solr安装路径并且使用solr start命令后台启动solr

启动solr
我们还可以输入命令

solr start -help

来查看更多命令操作

命令图一.png

命令图二.png
输入start solr之后,如果成功出现solr主页面(如下图),则说明solr安装配置没有没有问题,可以进行下一步操作。由于使用了自带的Jetty Server,所以启动后的默认端口就是8983。注意,在solr页面操作过程当中,要一直开着dos窗口。

solr启动页面

默认端口

2.接着创建一个core
在dos输入命令 solr create -c mycore,创建一个mycore的索引库

Paste_Image.png

出现如下图所示则说明创建成功:

成功创建一个core

3.接着我们可以在F:\solr\solr-6.5.1\server\solr 下面看到刚刚创建的core包

core包地址.png

点开mycore->conf->managed-schema(在5.0前,该文件是shcema.xml文件),点开并添加如下代码,dicPath改成自己managed-schema的路径:

<!-- mmseg4j-->     <field name="mmseg4j_complex_name" type="text_mmseg4j_complex" indexed="true" stored="true"/>     <field name="mmseg4j_maxword_name" type="text_mmseg4j_maxword" indexed="true" stored="true"/>     <field name="mmseg4j_simple_name" type="text_mmseg4j_simple" indexed="true" stored="true"/>     <fieldType name="text_mmseg4j_complex" class="solr.TextField" positionIncrementGap="100" >        <analyzer>           <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="complex" dicPath="F:\solr\solr-6.5.1\server\solr\mycore\conf"/>           <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />         </analyzer>     </fieldType>     <fieldType name="text_mmseg4j_maxword" class="solr.TextField" positionIncrementGap="100" >          <analyzer>            <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="max-word" dicPath="F:\solr\solr-6.5.1\server\solr\mycore\conf"/>            <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />          </analyzer>      </fieldType>      <fieldType name="text_mmseg4j_simple" class="solr.TextField" positionIncrementGap="100" >          <analyzer>            <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="simple" dicPath="F:\solr\solr-6.5.1\server\solr\mycore\conf"/>            <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />          </analyzer>      </fieldType><!-- mmseg4j-->

4.保存,重启solr

solr restart -p 8983

重启命令.png

之后刷新我们的solr界面,mycore->analysis->select,可以看到成功的新增的Field

新增的Field

在Field Value中输入内容,选择FieldType,点击Analyse Values即可,结果如图:

Paste_Image.png

五,分词方法与效果分析

经济学博士四川大学公共管理学院教授博士生导师副院长全国政治学类专业教学指导委员会委员四川省政治学会常务理事四川省人民政府职能转变专家组组长成都市人民政府职能转变专家组组长西藏自治区人民政府咨询委员四川社会治理与公共安全研究智库首席专家四川大学社会发展与社会风险控制研究中心四川省社会科学重点研究基地副主任四川大学地方政府创新中心副主任

对这一段话采用不同的分词方法进行分词,比较他们的效果:
(1)mmseg4j_complex_name,分词效果如图。重点看对“西藏自治区人民政府”的分词

mmseg4j_complex_name.png
分析:Complex:在一串字符中,找到所以可能的三字快开始匹配,寻找最大长度的字块。
(2)mmseg4j_maxword_name,分词效果如图

mmseg4j_maxword_name.png.png

分析:maxword是在complex分词后的结果去掉或保留单字。

(3)mmseg4j_simple_name

mmseg4j_simple_name.png

分析:simple:在一串字符串中从开头匹配子串,找到所有可能的匹配。

六,分词结果提交

这里我借用jieba分词来实现最终的分词结果。因为目前我还没有找到直接在solr界面对一个文件中的内容进行分词,但是jieba可以实现。
生成一个teacher.txt文件,存放四川大学教师简介信息。打开jupyter notebook界面(具体操作可以参考我上一篇博客),上传teacher.txt文件,编写如下代码,则可以达到分词效果如图:

分词结果

分词结果
将结果导出,并借助Tika工具,转换成xml文件。

Paste_Image.png

七,词频统计

同样利用jupyter notebook+jieba,来实现词频统计,代码和结果如下图,我们统计前200个出现频率最高的词和他们的次数:

词频统计

用Tika格式转换可以更明了的看到词频统计

词频统计

参考链接:

1 . http://www.cnblogs.com/sainaxingxing/p/6065882.html
2 . http://m.blog.csdn.net/article/details?id=52065562
3 . http://blog.csdn.net/qq_38425619/article/details/72486596


六, 查询报告

Solr基础练习

1 理解索引
1.1techproducts内核所在的文件目录:

D:\solr-6.3.0\solr-6.3.0\example\techproducts

1.2 定位 techproducts索引数据的文件位置 :

D:\solr-6.3.0\solr-6.3.0\example\techproducts\solr\techproducts\data

1.3 成功下载索引数据到本地

1.4 使用 LukeLuke 查看索引数据

image.png

1.4.2 luck可以做什么:
五个选项卡分别是:Overview,Document,Search, Commits,Plugins
- 浏览文件编号
- 查看文件/复制到剪贴板
- 检索条件的最常见的排名名单
- 执行搜索和浏览结果
- 搜寻结果分析
- 有选择地从索引中删除文件
- 重构原始文档,修改并重新插入到索引
- 优化索引

1.4.3搜索 name :ipod ipod,查看搜索结果 点击 explain了解第一条搜 索结果的 得分:(图二)(图三)

image.png

image.png
1.5.1 定位 techproducts 的 schema 信息 :

D:\solr-6.3.0\solr-6.3.0\example\techproducts\solr\techproducts\conf
1.5.2 techproducts的被索引文档

2 .掌握 Query 查询构造查找

2.1 搜索制造商为Belkin的 iPod 配件 , 搜索结果按价格升序排列, 搜索结果按价格升序排列,搜索结果内容包含名称 (name )、价格( price )、特征 (features),返回 xml 数据 。
查询请求:

*q: *iPod
fq::manu:Belkin
sort: inStock desc,price asc
field list: name price feature popularity
image.png
查询结果(片段及分析)
http://localhost:8983/solr/techproducts/select?fl=name%20price%20feature%20popularity&fq=manu:Belkin&indent=on&q=iPod&sort=inStock%20desc,price%20asc&wt=json

{  "responseHeader":{    "status":0,    "QTime":2,    "params":{      "q":"iPod",      "indent":"on",      "fl":"name price feature popularity",      "fq":"manu:Belkin",      "sort":"inStock desc,price asc",      "wt":"json"}},  "response":{"numFound":2,"start":0,"docs":[      {        "name":"iPod & iPod Mini USB 2.0 Cable",        "price":11.5,        "popularity":1},      {        "name":"Belkin Mobile Power Cord for iPod w/ Dock",        "price":19.95,        "popularity":1}]  }}

查询结果主体是Belkin
index= on 返回的结果缩进
field list:指定返回name price feature popularity字段
phrase query:短语查询是需要满足多个查询词组

2.2 搜索流行度为 5及以上的产品,搜索结果先 按 inStock降序,再 按 price升序, 升序, 每页显 示 5个结果,搜索结果内容称包括名称 (name name)、价格( 价格( priceprice )、特征( features)受欢 迎程度 (popularity),返回 json数据 。

image.png

查询请求:
http://localhost:8983/solr/techproducts/select?debugQuery=on&fl=name%20price%20feature%20popularity&fq=popularity:[5%20TO%20]&indent=on&q=:*&rows=5&sort=inStock%20desc,price%20asc&wt=json

{  "responseHeader":{    "status":0,    "QTime":2,    "params":{      "q":"*:*",      "indent":"on",      "fl":"name price feature popularity",      "fq":"popularity:[5 TO *]",      "sort":"inStock desc,price asc",      "rows":"5",      "wt":"json",      "debugQuery":"on"}},  "response":{"numFound":12,"start":0,"docs":[      {        "name":"Solr, the Enterprise Search Server",        "price":0.0,        "popularity":10},      {        "name":"CORSAIR ValueSelect 1GB 184-Pin DDR SDRAM Unbuffered DDR 400 (PC 3200) System Memory - Retail",        "price":74.99,        "popularity":7},      {        "name":"Samsung SpinPoint P120 SP2514N - hard drive - 250 GB - ATA-133",        "price":92.0,        "popularity":6},      {        "name":"Canon PIXMA MP500 All-In-One Photo Printer",        "price":179.99,        "popularity":6},      {        "name":"CORSAIR  XMS 2GB (2 x 1GB) 184-Pin DDR SDRAM Unbuffered DDR 400 (PC 3200) Dual Channel Kit System Memory - Retail",        "price":185.0,        "popularity":5}]  },  "debug":{    "rawquerystring":"*:*",    "querystring":"*:*",    "parsedquery":"MatchAllDocsQuery(*:*)",    "parsedquery_toString":"*:*",    "explain":{      "SOLR1000":"\n1.0 = *:*, product of:\n  1.0 = boost\n  1.0 = queryNorm\n",      "VS1GB400C3":"\n1.0 = *:*, product of:\n  1.0 = boost\n  1.0 = queryNorm\n",      "SP2514N":"\n1.0 = *:*, product of:\n  1.0 = boost\n  1.0 = queryNorm\n",      "0579B002":"\n1.0 = *:*, product of:\n  1.0 = boost\n  1.0 = queryNorm\n",      "TWINX2048-3200PRO":"\n1.0 = *:*, product of:\n  1.0 = boost\n  1.0 = queryNorm\n"},    "QParser":"LuceneQParser",    "filter_queries":["popularity:[5 TO *]"],    "parsed_filter_queries":["popularity:[5 TO *]"],    "timing":{      "time":1.0,      "prepare":{        "time":0.0,        "query":{          "time":0.0},        "facet":{          "time":0.0},        "facet_module":{          "time":0.0},        "mlt":{          "time":0.0},        "highlight":{          "time":0.0},        "stats":{          "time":0.0},        "expand":{          "time":0.0},        "terms":{          "time":0.0},        "debug":{          "time":0.0}},      "process":{        "time":0.0,        "query":{          "time":0.0},        "facet":{          "time":0.0},        "facet_module":{          "time":0.0},        "mlt":{          "time":0.0},        "highlight":{          "time":0.0},        "stats":{          "time":0.0},        "expand":{          "time":0.0},        "terms":{          "time":0.0},        "debug":{          "time":0.0}}}}}

2.3 搜索 价格在 400 以下 且有存库 的商品 ,按受欢迎程度降序排列搜索 结果内容包括名称 (name )价格( price ),特征( features )及得分 (score ), 返回 json 数据

image.png

查询请求:
http://localhost:8983/solr/techproducts/select?fl=name%20price%20features%20score&fq=price:[%20TO%20400]&inStock=true&indent=on&q=:*&sort=popularity%20desc&wt=json
查询结果(片段及分析):

{  "responseHeader":{    "status":0,    "QTime":3,    "params":{      "q":"*:*",      "indent":"on",      "fl":"name price features score",      "inStock":"true",      "fq":"price:[* TO 400]",      "sort":"popularity desc",      "wt":"json"}},  "response":{"numFound":13,"start":0,"maxScore":1.0,"docs":[      {        "name":"Apple 60 GB iPod with Video Playback Black",        "features":["iTunes, Podcasts, Audiobooks",          "Stores up to 15,000 songs, 25,000 photos, or 150 hours of video",          "2.5-inch, 320x240 color TFT LCD display with LED backlight",          "Up to 20 hours of battery life",          "Plays AAC, MP3, WAV, AIFF, Audible, Apple Lossless, H.264 video",          "Notes, Calendar, Phone book, Hold button, Date display, Photo wallet, Built-in games, JPEG photo playback, Upgradeable firmware, USB 2.0 compatibility, Playback speed control, Rechargeable capability, Battery level indication"],        "price":399.0,        "score":1.0},      {        "name":"Solr, the Enterprise Search Server",        "features":["Advanced Full-Text Search Capabilities using Lucene",          "Optimized for High Volume Web Traffic",          "Standards Based Open Interfaces - XML and HTTP",          "Comprehensive HTML Administration Interfaces",          "Scalability - Efficient Replication to other Solr Search Servers",          "Flexible and Adaptable with XML configuration and Schema",          "Good unicode support: héllo (hello with an accent over the e)"],        "price":0.0,        "score":1.0},      {        "name":"CORSAIR ValueSelect 1GB 184-Pin DDR SDRAM Unbuffered DDR 400 (PC 3200) System Memory - Retail",        "price":74.99,        "score":1.0},      {        "name":"Canon PowerShot SD500",        "features":["3x zoop, 7.1 megapixel Digital ELPH",          "movie clips up to 640x480 @30 fps",          "2.0\" TFT LCD, 118,000 pixels",          "built in flash, red-eye reduction"],        "price":329.95,        "score":1.0},      {        "name":"Samsung SpinPoint P120 SP2514N - hard drive - 250 GB - ATA-133",        "features":["7200RPM, 8MB cache, IDE Ultra ATA-133",          "NoiseGuard, SilentSeek technology, Fluid Dynamic Bearing (FDB) motor"],        "price":92.0,        "score":1.0},      {        "name":"Maxtor DiamondMax 11 - hard drive - 500 GB - SATA-300",        "features":["SATA 3.0Gb/s, NCQ",          "8.5ms seek",          "16MB cache"],        "price":350.0,        "score":1.0},      {        "name":"ViewSonic VA902B - flat panel display - TFT - 19\"",        "features":["19\" TFT active matrix LCD, 8ms response time, 1280 x 1024 native resolution"],        "price":279.95,        "score":1.0},      {        "name":"Canon PIXMA MP500 All-In-One Photo Printer",        "features":["Multifunction ink-jet color photo printer",          "Flatbed scanner, optical scan resolution of 1,200 x 2,400 dpi",          "2.5\" color LCD preview screen",          "Duplex Copying",          "Printing speed up to 29ppm black, 19ppm color",          "Hi-Speed USB",          "memory card: CompactFlash, Micro Drive, SmartMedia, Memory Stick, Memory Stick Pro, SD Card, and MultiMediaCard"],        "price":179.99,        "score":1.0},      {        "name":"CORSAIR  XMS 2GB (2 x 1GB) 184-Pin DDR SDRAM Unbuffered DDR 400 (PC 3200) Dual Channel Kit System Memory - Retail",        "features":["CAS latency 2,  2-3-3-6 timing, 2.75v, unbuffered, heat-spreader"],        "price":185.0,        "score":1.0},      {        "name":"Belkin Mobile Power Cord for iPod w/ Dock",        "features":["car power adapter, white"],        "price":19.95,        "score":1.0}]  }}

2.4 在特征(features )字段中搜索“ plays ”,对其进行高亮 搜索结果 内容采用默认形式 内容采用默认形式, 返回 xm l数据 。
image.png
查询请求:
http://localhost:8983/solr/techproducts/select?hl.fl=features:plays&hl=on&indent=on&q=:&wt=xml
查询结果(片段及分析):

<response><lst name="responseHeader"><int name="status">0</int><int name="QTime">0</int><lst name="params"><str name="q">*:*</str><str name="hl">on</str><str name="indent">on</str><str name="hl.fl">features:plays</str><str name="wt">xml</str></lst></lst><result name="response" numFound="32" start="0"><doc><str name="id">GB18030TEST</str><str name="name">Test with some GB18030 encoded characters</str><arr name="features"><str>No accents here</str><str>这是一个功能</str><str>This is a feature (translated)</str><str>这份文件是很有光泽</str><str>This document is very shiny (translated)</str></arr><float name="price">0.0</float><str name="price_c">0.0,USD</str><bool name="inStock">true</bool><long name="_version_">1569527577767313408</long></doc><doc><str name="id">SP2514N</str><str name="name">Samsung SpinPoint P120 SP2514N - hard drive - 250 GB - ATA-133</str><str name="manu">Samsung Electronics Co. Ltd.</str><str name="manu_id_s">samsung</str><arr name="cat"><str>electronics</str><str>hard drive</str></arr><arr name="features"><str>7200RPM, 8MB cache, IDE Ultra ATA-133</str><str>NoiseGuard, SilentSeek technology, Fluid Dynamic Bearing (FDB) motor</str></arr><float name="price">92.0</float><str name="price_c">92.0,USD</str><int name="popularity">6</int><bool name="inStock">true</bool><date name="manufacturedate_dt">2006-02-13T15:26:37Z</date><str name="store">35.0752,-97.032</str><long name="_version_">1569527578063011840</long></doc><doc><str name="id">6H500F0</str><str name="name">Maxtor DiamondMax 11 - hard drive - 500 GB - SATA-300</str><str name="manu">Maxtor Corp.</str><str name="manu_id_s">maxtor</str><arr name="cat"><str>electronics</str><str>hard drive</str></arr><arr name="features"><str>SATA 3.0Gb/s, NCQ</str><str>8.5ms seek</str><str>16MB cache</str></arr><float name="price">350.0</float><str name="price_c">350.0,USD</str><int name="popularity">6</int><bool name="inStock">true</bool><str name="store">45.17614,-93.87341</str><date name="manufacturedate_dt">2006-02-13T15:26:37Z</date><long name="_version_">1569527578155286528</long></doc><doc><str name="id">F8V7067-APL-KIT</str><str name="name">Belkin Mobile Power Cord for iPod w/ Dock</str><str name="manu">Belkin</str><str name="manu_id_s">belkin</str><arr name="cat"><str>electronics</str><str>connector</str></arr><arr name="features"><str>car power adapter, white</str></arr><float name="weight">4.0</float><float name="price">19.95</float><str name="price_c">19.95,USD</str><int name="popularity">1</int><bool name="inStock">false</bool><str name="store">45.18014,-93.87741</str><date name="manufacturedate_dt">2005-08-01T16:30:25Z</date><long name="_version_">1569527578167869440</long></doc><doc><str name="id">IW-02</str><str name="name">iPod & iPod Mini USB 2.0 Cable</str><str name="manu">Belkin</str><str name="manu_id_s">belkin</str><arr name="cat"><str>electronics</str><str>connector</str></arr><arr name="features"><str>car power adapter for iPod, white</str></arr><float name="weight">2.0</float><float name="price">11.5</float><str name="price_c">11.50,USD</str><int name="popularity">1</int><bool name="inStock">false</bool><str name="store">37.7752,-122.4232</str><date name="manufacturedate_dt">2006-02-14T23:55:59Z</date><long name="_version_">1569527578172063744</long></doc><doc><str name="id">MA147LL/A</str><str name="name">Apple 60 GB iPod with Video Playback Black</str><str name="manu">Apple Computer Inc.</str><str name="manu_id_s">apple</str><arr name="cat"><str>electronics</str><str>music</str></arr><arr name="features"><str>iTunes, Podcasts, Audiobooks</str><str>Stores up to 15,000 songs, 25,000 photos, or 150 hours of video</str><str>2.5-inch, 320x240 color TFT LCD display with LED backlight</str><str>Up to 20 hours of battery life</str><str>Plays AAC, MP3, WAV, AIFF, Audible, Apple Lossless, H.264 video</str><str>Notes, Calendar, Phone book, Hold button, Date display, Photo wallet, Built-in games, JPEG photo playback, Upgradeable firmware, USB 2.0 compatibility, Playback speed control, Rechargeable capability, Battery level indication</str></arr><str name="includes">earbud headphones, USB cable</str><float name="weight">5.5</float><float name="price">399.0</float><str name="price_c">399.00,USD</str><int name="popularity">10</int><bool name="inStock">true</bool><str name="store">37.7752,-100.0232</str><date name="manufacturedate_dt">2005-10-12T08:00:00Z</date><long name="_version_">1569527578178355200</long></doc><doc><str name="id">adata</str><str name="compName_s">A-Data Technology</str><str name="address_s">46221 Landing Parkway Fremont, CA 94538</str><long name="_version_">1569527578204569600</long></doc><doc><str name="id">apple</str><str name="compName_s">Apple</str><str name="address_s">1 Infinite Way, Cupertino CA</str><long name="_version_">1569527578204569601</long></doc><doc><str name="id">asus</str><str name="compName_s">ASUS Computer</str><str name="address_s">800 Corporate Way Fremont, CA 94539</str><long name="_version_">1569527578204569602</long></doc><doc><str name="id">ati</str><str name="compName_s">ATI Technologies</str><str name="address_s">33 Commerce Valley Drive East Thornhill, ON L3T 7N6 Canada</str><long name="_version_">1569527578205618176</long></doc></result><lst name="highlighting"><lst name="GB18030TEST"/><lst name="SP2514N"/><lst name="6H500F0"/><lst name="F8V7067-APL-KIT"/><lst name="IW-02"/><lst name="MA147LL/A"/><lst name="adata"/><lst name="apple"/><lst name="asus"/><lst name="ati"/></lst></response>

2.5 搜索出价格为 0到 300,300 到 600 ,600 以上的商品 ,按 类别( cat )归类 ,显示字段 为名字( name ),价格( price),制造商( manu ), 返回json数据 。
查询请求:
http://localhost:8983/solr/techproducts/select?facet.field=cat&facet.query=price:[0%20TO%20300]&[300%20TO%20600]&[600%20TO%20]&facet=on&fl=name%20price%20manu&indent=on&q=:*&wt=json

image.png

查询结果(片段及分析):

{  "responseHeader":{    "status":0,    "QTime":5,    "params":{      "facet.query":"price:[0 TO 300]",      "q":"*:*",      "facet.field":"cat",      "indent":"on",      "fl":"name price manu",      "facet":"on",      "wt":"json",      "[600 TO *]":"",      "[300 TO 600]":""}},  "response":{"numFound":32,"start":0,"docs":[      {        "name":"Test with some GB18030 encoded characters",        "price":0.0},      {        "name":"Samsung SpinPoint P120 SP2514N - hard drive - 250 GB - ATA-133",        "manu":"Samsung Electronics Co. Ltd.",        "price":92.0},      {        "name":"Maxtor DiamondMax 11 - hard drive - 500 GB - SATA-300",        "manu":"Maxtor Corp.",        "price":350.0},      {        "name":"Belkin Mobile Power Cord for iPod w/ Dock",        "manu":"Belkin",        "price":19.95},      {        "name":"iPod & iPod Mini USB 2.0 Cable",        "manu":"Belkin",        "price":11.5},      {        "name":"Apple 60 GB iPod with Video Playback Black",        "manu":"Apple Computer Inc.",        "price":399.0},      {},      {},      {},      {}]  },  "facet_counts":{    "facet_queries":{      "price:[0 TO 300]":10},    "facet_fields":{      "cat":[        "electronics",12,        "currency",4,        "memory",3,        "connector",2,        "graphics card",2,        "hard drive",2,        "search",2,        "software",2,        "camera",1,        "copier",1,        "electronics and computer1",1,        "electronics and stuff2",1,        "multifunction printer",1,        "music",1,        "printer",1,        "scanner",1]},    "facet_ranges":{},    "facet_intervals":{},    "facet_heatmaps":{}}}

原创粉丝点击