精华内容
下载资源
问答
  • 如果您已阅读完第 1 部分,如何使用 Elasticsearch 6.2 搜索中文、日语和韩语文本 - 第 2 部分:多字段介绍了通过多字段对以多种语言编写的文档进行索引和搜索的方法。然而,如果不管任何语言,我们都将文本存储四...

    这是我有关中文、日语和韩语文本搜索的系列文章的第 3 部分。如果您还没有阅读有关分析工具的第 1 部分,您可能希望先阅读这一部分。如果您已阅读完第 1 部分,如何使用 Elasticsearch 6.2 搜索中文、日语和韩语文本 - 第 2 部分:多字段介绍了通过多字段对以多种语言编写的文档进行索引和搜索的方法。然而,如果不管任何语言,我们都将文本存储在四个字段内并使用四种分析工具进行分析,这可能会浪费我们的宝贵时间和存储空间。现在,我们将尝试通过语言检测工具来进行优化。和之前一样,文本仍然节选自 https://www.pyeongchang2018.com/en/about-the-games

    语言检测工具

    我们可以安装并利用可检测语言的摄取插件来节省时间和存储空间。下面的摄取管道会检测“正文”字段的语言并且会通过语言检测处理器将检测到的语言放到“语言”字段中,而非将其索引至主字段和三个子字段中。然后脚本处理器会将“正文”字段的内容复制到具体语言的字段中(english_field、korean_field、japanese_field 或 chinese_field)进行分析。

    PUT _ingest/pipeline/langdetect-pipeline
    {
      "description": "A pipeline to do whatever",
      "processors": [
        {
          "langdetect": {
            "field": "body",
            "target_field": "language"
          }
        },
        {
          "script": {
            "lang": "painless",
            "source": "if (ctx.language == 'ko') ctx.korean_field = ctx.body; if (ctx.language == 'ja') ctx.japanese_field = ctx.body; if (ctx.language == 'zh-cn') ctx.chinese_field = ctx.body; if (ctx.language == 'en') ctx.english_field = ctxRead More

    在本篇博客文章中,我使用的是 kuromojismartcn 和 openkoreantext-analyzer;您也要首先安装这些插件,然后才能创建下面的索引。

    DELETE test2
    PUT /test2
    {  
      "mappings": {
        "docs": {
          "properties": {
            "body": {
              "type": "text"
            },
            "english_field": {
              "type": "text"
            },
            "korean_field": {
              "analyzer": "openkoreantext-analyzer",
              "type": "text"
            },
            "japanese_field": {
              "analyzer": "kuromoji",
              "type": "text"
            },
            "chinese_field": {
              "analyzer": "smartcn",
              "type": "text"
            }
          }
        }
      }
    }

    对文档进行索引时,您应当指明使用语言检测工具的 langdetect-pipeline 管道。

    PUT /test2/docs/1?pipeline=langdetect-pipeline
    {
      "body" : "The XXIII Olympic Winter Games will be held for 17 days from 9 to 25 February 2018 in PyeongChang, Gangwon Province, the Republic of Korea. PyeongChang was selected as the host city of the 2018 Olympic Winter Games after receiving a majority vote at the 123rd IOC Session held on 6 July 2011 after three consecutive bids. The Olympic Winter Games will be held in Korea for the first timeRead More

    示例: 如果“正文”字段的内容是韩语,则会将其复制到 korean_field,如下所示:

    GET /test2/docs/2
    =>
    {
      "_index": "test",
      "_type": "docs",
      "_id": "2",
      "_version": 1,
      "found": true,
      "_source": {
        "language": "ko",
        "body": "제23회 동계올림픽대회는 대한민국 강원도 평창에서 2018년 2월 9일부터 25일까지 17일간 개최됩니다. 대한민국 평창은 세 번의 도전 끝에 지난 2011년 7월 6일 열린 제123차 IOC 총회에서 과반 표를 획득하며 2018년 동계올림픽 개최지로 선정되었습니다. 이로써 대한민국에서는 1988년 서울 올림픽 이후 30Read More

    使用多字段的话,我们可以得到相似的搜索结果。这里用到了源文本筛选来筛选结果:

    韩语

    POST /test2/_search
    {
      "query": {
        "multi_match": {
          "query": "올림픽대회",
          "fields": [
            "english_field",
            "korean_field",
            "chinese_field",
            "japanese_field"
          ]
        }
      },
      "_source": "body"
    }
    =>
    ...
      "hits": {
        "total": 1,
        "max_score": 0.57860667,
        "hits": [
          {
            "_index": "test",
            "_type": "docs",
            "_id": "2",
            "_score": 0.57860667,
            "_source": {
              "body": "제23회 동계올림픽대회는 대한민국 강원도 평창에서 2018년 2월 9일부터 25일까지 17Read More

    英语

    POST /test2/_search
    {
      "query": {
        "multi_match": {
          "query": "Olympic Games",
          "fields": [
            "english_field",
            "korean_field",
            "chinese_field",
            "japanese_field"
          ]
        }
      },
      "_source": "body"
    }
    =>
    ...
      "hits": {
        "total": 1,
        "max_score": 0.97953933,
        "hits": [
          {
            "_index": "test",
            "_type": "docs",
            "_id": "1",
            "_score": 0.97953933,
            "_source": {
              "body": "The XXIII Olympic Winter Games will be held for 17 days from 9 to 25 February 2018 inRead More

    日语

    POST /test2/_search
    {
      "query": {
        "multi_match": {
          "query": "オリンピック大会",
          "fields": [
            "english_field",
            "korean_field",
            "chinese_field",
            "japanese_field"
          ]
        }
      },
      "_source": "body"
    }
    =>
    ...
      "hits": {
        "total": 1,
        "max_score": 0.7469032,
        "hits": [
          {
            "_index": "test2",
            "_type": "docs",
            "_id": "4",
            "_score": 0.7469032,
            "_source": {
              "body": "第23回冬季オリンピック大会は大韓民国江原道平昌で2018年2月9日から25日までの17Read More

    中文

    POST /test2/_search
    {
      "query": {
        "multi_match": {
          "query": "奥运会",
          "fields": [
            "english_field",
            "korean_field",
            "chinese_field",
            "japanese_field"
          ]
        }
      },
      "_source": "body"
    }
    =>
    ...
      "hits": {
        "total": 1,
        "max_score": 0.49148652,
        "hits": [
          {
            "_index": "test2",
            "_type": "docs",
            "_id": "3",
            "_score": 0.49148652,
            "_source": {
              "body": "第23届冬季奥运会将于2018年2月9日-25日在韩国江原道平昌展开。韩国平昌在第三次申奥之后,于2011年7月6日召开的第123Read More

    请注意:由于我们搜索的只是通过具体语言分析工具分析的字段,所以当我们查询日语关键词时,我们只会得到日语文档,同理当我们查询中文关键词时,我们仅会得到中文文档。这与多字段方式有所不同,有关多字段方式,详见如何使用 Elasticsearch 6.2 搜索中文、日语和韩语文本 - 第 2 部分:多字段

    担心耗时过长?

    如果您担心索引或查询的时间,虽然与使用单字段相比,使用多字段或语言检测工具进行索引时耗时会稍长一点,但是其实它们之间的差别并不大。

    index-time.pnguploading.4e448015.gif正在上传…重新上传取消index-time.png

    图 1 - 索引 500 份文档所用的时间(MacBook Pro,2.9 GHz Intel Core i7, 16GB 2133 MHz LPDDR3)

    使用多字段或语言检测工具查询所用的时间与使用单字段查询所用的时间基本相同。

    query-time.pnguploading.4e448015.gif正在上传…重新上传取消query-time.pnguploading.4e448015.gif转存失败重新上传取消query-time.png

    图 2 - 进行 500 次查询所用的时间 (MacBook Pro,2.9 GHz Intel Core i7, 16GB 2133 MHz LPDDR3)

    通过语言检测工具,我们能够实现比多字段方法更佳的搜索结果,而且还可节省存储空间。Elasticsearch 6.x 甚至还有“稀疏字段改进措施”功能(详见 Elasticsearch 6.0 可节省空间的改善措施)。

    附录

    multi-lang-scripts.zip

    • index.sh - 测量索引时间的脚本
    • query.sh - 测量查询时间的脚本
    展开全文
  • 有了对搜索产品足够深入地了解,再...【编者按】如何在廉价机器上运行一个超过300万份文档搜索?云计算时代,托管搜索服务很受欢迎,但实际上并不是经济的选择,而且也不一定能有效解决问题,Solr是一个基于Lucene的
    有了对搜索产品足够深入地了解,再进行一些实验,从廉价的硬件中获得高性能是完全可能的,我们完全可以避免对SaaS的依赖,从而节省大量的费用。了解系统的内部原理也能在你向SaaS平台转移时,帮助你作出正确的决定。

    【编者按】如何在廉价机器上运行一个超过300万份文档的搜索?云计算时代,托管搜索服务很受欢迎,但实际上并不是经济的选择,而且也不一定能有效解决问题,Solr是一个基于Lucene的高性能全文搜索服务器,采用Solr,我们完全可以避免对SaaS的依赖,通过对搜索产品进行足够深入地了解,再进行一些实验,从廉价硬件中获得高性能是完全可能的,那怎样才能实现这个过程?系统集成架构师Richard Donovan为我们带来了精彩分析。

    p://t.163.com/event/info/eventId/1822449668070071988
    p://t.163.com/event/info/eventId/-2324342450692915754
    p://t.163.com/event/info/eventId/-3556723316018294678
    p://t.163.com/event/info/eventId/799192104155530126

    p://t.163.com/event/info/eventId/-447263056928746952

    p://t.163.com/event/info/eventId/-9110294460450544481
    p://t.163.com/event/info/eventId/3340787271802588591
    p://t.163.com/event/info/eventId/-2266627315521096256
    p://t.163.com/event/info/eventId/7834155170249969902
    p://t.163.com/event/info/eventId/6344953491722642591
    p://t.163.com/event/info/eventId/3604802380103741676
    p://t.163.com/event/info/eventId/123805096404776922
    p://t.163.com/event/info/eventId/-3424583459595315592
    p://t.163.com/event/info/eventId/-7288586468665227874
    p://t.163.com/event/info/eventId/2181240977623858769
    p://t.163.com/event/info/eventId/-5790013916106862538
    p://t.163.com/event/info/eventId/-7030890997361711026
    p://t.163.com/event/info/eventId/5476896456848970228
    p://t.163.com/event/info/eventId/-3784644929273455084
    p://t.163.com/event/info/eventId/-2762855392051062056
    p://t.163.com/event/info/eventId/-6337775635772898439
    p://t.163.com/event/info/eventId/-5083035136815533032
    p://t.163.com/event/info/eventId/5763298910870158706
    p://t.163.com/event/info/eventId/-2013553638125373524
    p://t.163.com/event/info/eventId/-1883889514838265849
    http://t.163.com/event/info/eventId/812391283303442392
    http://t.163.com/event/info/eventId/1254152932691604352
    http://t.163.com/event/info/eventId/8097388481040325227
    http://t.163.com/event/info/eventId/-3135660923474797357
    http://t.163.com/event/info/eventId/1616406387987886259
    http://t.163.com/event/info/eventId/-7122291914246397108
    http://t.163.com/event/info/eventId/-5810595010851936751
    http://t.163.com/event/info/eventId/4575354702728269076
    http://t.163.com/event/info/eventId/3668350469413493717
    http://t.163.com/event/info/eventId/-8620975128814867322
    http://t.163.com/event/info/eventId/-2943363657522258100
    http://t.163.com/event/info/eventId/-4026462747479264150

    展开全文
  • 用python对word文档进行搜索和读取,要分享读取docx文件中某个关键字文本最好是全部都读取到程序中,程序中进行判断。 本文实例讲述了Python实现批量读取word中表格信息的方法。分享给大家...

    python如何获取word文件中某个关键字之后的表格一片春愁待酒浇。江上舟摇,楼上帘招。秋娘度与泰娘娇。风又飘飘,雨又萧萧。何日归家洗客袍?银字笙调,心字香烧。流光容易把人抛。红了樱桃,绿了芭蕉。

    用python对word文档进行搜索和读取,要分享读取docx文件中某个关键字文本最好是全部都读取到程序中,在程序中进行判断。 本文实例讲述了Python实现批量读取word中表格信息的方法。分享给大家供大家参考。具体如下: 单位收集了很多word格式的调查表,领导需要收集表单里的信息,小编就把所有调查表放一个文件里。

    python读取word文档内容

    python如何逐行读取word文档内容 使用的是win32com库第一眼就看上的衣服往往你买不起第一眼就心动的人往往他不会喜欢你。

    如何使用python读取word的表格并输出为字典?每一滴酒都回不到最初的葡萄,就像小编们都回不到年少。

    python读取word中合并单元格输出到excel

    目的是用python读取word中表格输出到excel,但是现在碰到word中有合并的xlrd和xlwt两个模块中,可以选择合并单元格的行数,但是判断合并的行数貌似不行把,它用xlrd读取时,尽管合并了但是读取是还是一行一行读的,只是合并后的数据读取时是在第一行中读取到的。

    python如何读取word文件中的文本内容并写入到新的t

    from docx import Document # 打开 word文件 f = open('随便写写行.docx', 'rb') # 读取 word文件内容 document = Document(f) # 打印 word 文档段落内容2进制列表 # print(document.paragraphs) # 打开一个txt文档用来写入数据 with open('res被相思浸染的清浅时光,在你小编隔岸的相望中悠悠的流淌。

    python操作word文档表格如果想结婚了就嫁给自己心里所喜欢的,余生遇见你并不觉得晚。

    问题1:python操作word文档表格,如何实现阴影效果? 如何能达到从表格1有时候你的生气并不是代表你的在乎,还有不信任。

    >>> app=my.Office.Word.GetInstance()>>> doc=app.Documents[0]>>> print doc.NameVBA工具集.doc>>> doc.Tables.Count2>>> table=doc.Tables[1]>>> table.Cell(1,1).Select()>>> app.Selection.MoveEnd(Unit=12, Count=4)4>>> app.Selection.Ce小编们往往沉醉于表面的敷衍,却忘了内心真正的渴望。

    网上看到很多用win32com库的但是他们仅仅讲如何操作word小编现在需分享是从悟空,柴火不够,多拿点经书来。悟净,你看看八戒熟了没有。

    >>> def PrintAllParagraphs(doc): count=doc.Paragraphs.Count for i in range(count-1,-1,-1): pr=doc.Paragraphs[i].Range print pr.Text >>> app=my.Office.Word.GetInstance()>>> doc=app.Documents[0]>>> PrintAllParagraphs(doc)1.什么是小编们的人生,如果没有了爱的存在,那该有多么多么的寂寞。

    python如何读取word当中的控件的状态和信息

    word当中有表单的信息,如单选按钮,多选按钮,或者其他ActiveX控件,py小编的手机会一直为你开着,如果你肯原谅小编,随时可以联系小编。

    分享助大神:如何用Python docx解析一个Word文档,在能在多如繁星的规则下不迷失自己就已经很难了,不屈服不从众还能保持适当的善意的人更是难能可贵。

    仅会语法的Python新手,任务是通过编程来生成一个Word文档,可以用模板小编曾经和一个人擦肩而过,擦出了火花,险些动起砖头。

    from docx import Document from docx.shared import Inches document = Document() document.add_heading('Document Title', 0) p = document.add_paragraph('A plain paragraph having some ') p.add_run('bold').bold = True p.add_run(' and小编不是高傲,也不是胡闹,只是厌倦了那些随时可能失去的依靠。

    python中如何将word表格内的内容进行替换你自己不将自己想在心里,倒也没关系,有小编将你摆在心里就够了。

    wb = Document(r"D:\python\报告\****.docx") for x in wb.paragraphs: 四个后,小编们将拿着三年青春和七张答卷跟世界赌一个明天.

    展开全文
  • 当我们搜索引擎上键入词组进行搜索时可能并没有想过,它是如何把我们想要的资料那么短的时间找出来。事实上几乎所有的搜索引擎都会有下列的功能以保证它能够又好又快的为我们提供资料。 1,爬行整个Web...

    搜索引擎是如何工作的(1)

    当我们在搜索引擎上键入词组进行搜索时可能并没有想过,它是如何把我们想要的资料在那么短的时间内找出来。事实上几乎所有的搜索引擎都会有下列的功能以保证它能够又好又快的为我们提供资料。

    1,爬行整个Web(crawling Web)

    搜索引擎自动运行的程序通过Web的超级链接(Hyperlink)结构爬行整个Web上的所有网页文档。这种程序通常被称做嗅控程序(bots)或爬行程序(spider)。

    2,收录文档(index document)

    当程序爬每行过一个网页文档时,文档的内容可能被搜索引擎收录(或称索引,index),保存在一个巨大的数据库中,从而组成搜索引擎的索引。当然了这些索引必须组织的非常好(到于如何实现我就不知道了,呵呵),这样当我们在搜索引擎进行搜索时,搜索引擎能够快速的众索引中找出我们要的信息。所以,如果你认为你在搜索引擎那边搜索时,搜索引擎才对整个巨大的Web进行搜索是不可能的。

    3,处理查询(processing queries)

    当搜索引擎收到一个搜索请求(一天可能有上亿个这样的请求),搜索引擎会检索它构建起来的索引来查找匹配查询的文档。它是以文档中是否出现以用户指定的形式出现的词语或短语。比如我们搜索car and driver magazine和“car and driver magazine”,前者在google会返回很多的结果,而后者只有几万个。因为前一个搜索通常被认为是查找所有的模式,google会返回所有内容中包含有car,driver,magazine的文档,而后者则指定了要以car and driver magazine这个词组的形式出现的文档才会被返回。事实上google有一个操作符列表 ,这些操作符可以用来帮我们更精确的查找资料,过滤掉一些结果。

    4,对查询结果分级(Ranking Result)

    一旦搜索引擎决定返回哪些结果作为匹配查询的结果时,搜索引擎会对所有准备返回的结果应用算法进行计算以决定各个结果是与用户的查询内容的匹配程度(或精确度吧),然后排序,当然是把最接近的结果放在前面这样用户就不要自己选了。

    展开全文
  • 帮助文档 概览 欢迎您使用CODEChina,如果您是 Github 或 GitLab 的初级用户,我们建议您从查看本文档开始学习如何使用 CODEChina。如果您熟悉以上两个产品中的一个或多个,您可以...如何在文档上做贡献 返回概览

空空如也

空空如也

1 2 3 4 5 ... 18
收藏数 359
精华内容 143
关键字:

如何在文档内进行搜索