`
wxinyu
  • 浏览: 6973 次
文章分类
社区版块
存档分类
最新评论

加亮搜索关键字,摘要出关键字的上下文

阅读更多
# -*- encoding:utf-8 -*-
import re

def get_pattern(query):
    items = []
    for pstr in re.split('\s+', query):
        sub_pstr = re.sub('^[\*\?\+]', '', pstr)
        if sub_pstr: items.append(sub_pstr)

    return '(?i)%s' % '|'.join(items)

def highlight(text, query):
    query = query.strip()
    if text and query:
        def dashrepl(matchobj):
            return '<em class="hL">' + matchobj.group(0) + '</em>'
        return re.sub(get_pattern(query), dashrepl, text)
    else:
        return text

def get_summary_text(obj, query, searchable_text):
    if query and searchable_text:
        try:
            searchable_text = searchable_text.decode('utf-8')
        except:
            try:
                searchable_text = searchable_text.decode('gb18030')
            except:
                return ''

        m = re.search(get_pattern(query), searchable_text)
        if m is None: return ''

        len_text = len(searchable_text)
        if len_text <= 100:
            return highlight(searchable_text, query)

        start, end = m.span()

        summary_text = ''
        if start - 50 > 0:
            summary_text += '... '
            summary_text += searchable_text[start - 50:start]
        else:
            summary_text += searchable_text[:start]

        summary_text += m.group(0)

        end_text = searchable_text[end:]
        if len(end_text) < 50:
            summary_text += end_text
        else:
            summary_text += end_text[:50]
            summary_text += ' ...'

        return highlight(summary_text, query)
    else: return ''

 

分享到:
评论

相关推荐

    context_rank:Semantyc 是一个上下文移动搜索引擎,它以用户“人”为中心,将结果返回给与用户相关和个性化的查询,并且基于用户查询的含义而不是查询中的关键字

    Semantyc 是一种基于上下文搜索的方法,它以用户/“人”为中心,并将结果返回给与用户相关和个性化的查询,并且基于用户查询的含义而不是查询中的关键字。介绍搜索在用户生命周期中扮演着重要角色。 它旨在消除花费...

    Selection Context Search-crx插件

    摘要: - 右键单击​​所选文本,然后从弹出窗口或上下文菜单中选择搜索网站 - 网站列表是在分机选项页面中编辑的。该列表可以包含书签文件夹。 - 上下文菜单中的无限嵌套文件夹深度 - 导出或导入网站列表 - 可选择...

    HUNDUN Digest-crx插件

    语言:English (United States) 使用HUNDUN一键获取摘要的Web文章。 转到您最喜欢的新闻网站,并使用HUNUN获得摘要文本!...-关键字云:查看常用关键字以帮助您评估文章上下文。 请等待加载图标充满电,以获取摘要文章!

    dataset-search

    资料集搜寻 概要 在此存储库中,我们提供了数据集搜索引擎的源代码。 网络上有大量且不断增长的数据集。 提供了数据集搜索引擎(例如... 因此,将创建一个包含科学问题描述(论文摘要或引文上下文)和相应数据集的火

    Pageverse Pocket-crx插件

    隐私我们使用页面内容来帮助进行上下文搜索。 例如,根据找到页面的内容搜索图像。 每个内容都保存在安全且加密的服务器上。 您可以根据需要删除任何和所有内容。 如果需要,您还可以选择导出数据。 您可以分别在...

    深入剖析Linux中断机制

    【摘要】本文详解了 Linux 内核的中断实现机制。首先介绍了中断的一些基本概念,然后分 析了面向对象的 Linux 中断的组织形式、三种主要数据结构及其之间的关系。随后介绍了 Linux 处理异常和中断的基本流程, 在此...

    Text Blaze-crx插件

    *上下文菜单:右键单击输入字段,您将能够从Text Blaze上下文菜单中选择摘要以展开。 Text Blaze不仅仅是快速扩展,它还允许您使用替换模式对代码段进行编程。 例如,通过在代码段中包含一些简单的特殊字符来插入...

    TortoiseSVN和TortoiseMerge的中文帮助文档(chm格式)

    4.27. 未受版本控制的文件之资源管理器上下文菜单 4.28. 未受版本控制的文件之资源管理器上下文菜单 4.29. 版本控制文件的菜单浏览 4.30. 恢复对话框 4.31. Subversion 属性页 4.32. 增加属性 4.33. svn:externals ...

    新生报到注册 课程设计论文

    摘要 在Internet飞速发展的今天,互联网成为人们快速获取、发布和传递信息的重要渠道,已经成为人发生活中不可缺少的一部分,在人们的政治、经济、社会生活等各个方面发挥着重要的作用。随着互联网技术和应用的普及...

    SVN操作手册中文版网页格式

    禁用上下文菜单 D. TortoiseSVN 操作 D.1. TortoiseSVN 命令 D.2. TortoiseIDiff 命令 E. 命令行交叉索引 E.1. 约定和基本规则 E.2. TortoiseSVN 命令 E.2.1. 检出 E.2.2. 更新 E.2.3. 更新到版本 E.2.4....

    文本大火「Text Blaze」-crx插件

    *上下文菜单:右键单击输入字段,您将能够从Text Blaze上下文菜单中选择摘要以展开 Text Blaze不仅仅是快速扩展,它还允许您使用替换模式对代码段进行编程。例如,通过在代码段中包含一些简单的特殊字符来插入当前...

    TortoiseSVN中文手册

    2.4. 摘要 ............................................................... 12 3. 配置服务器 ................................................................ 14 3.1. 基于 Apache 的服务器 ..................

    struts in Action

    1. 介绍.........................................................................................................18 1.1. 关于本书...........................................................................

    Struts in Action中文版

    1. 介绍.........................................................................................................18 1.1. 关于本书..........................................................................

Global site tag (gtag.js) - Google Analytics