Jirasearch 2.0狗粮:使用Lucene查找我们的Jira问题

几年前,我首先构建并发布了Jirasearch ,它是用于薄型包装Lucene服务器的有趣的狗粮测试用例,以针对我们的Jira问题公开强大的搜索UI。

这很好地展示了Lucene的许多重要功能:

  • 使用块联接查询来建模父文档(原始的Jira问题)和子文档(每个注释)。 这种基本的关系结构在电子商务应用程序中也很常见,在电子商务应用程序中 ,您拥有一件产品(例如,一件特定的衬衫),然后在该衬衫下拥有单独的SKU(尺寸/颜色组合)
  • PostingsHighlighter突出显示
  • 具有平面,层次结构和动态数值范围字段的构面。 请记住,您可以通过Shift +单击来选择多个构面值(多选) !
  • DrillSideways方面计数,因此您不会因为其他标签中的一个而损失其他方面的计数
  • AnalyzingInfixSuggester用于自动建议 ,包括近实时更新 。 建议是针对特定项目的:如果您已深入到特定项目,则这些建议将仅来自那些项目,这要归功于AnalyzingInfixSuggester 现在支持上下文
  • 近实时索引和搜索
  • WordDelimiterFilter以便拆分驼峰式标记(尝试搜索infix )
  • 同义字
  • 使用表达式动态计算匹配的排序顺序得分的新近度和相关性

奇怪的是,仍然缺少拼写校正甚至模糊的中缀建议(欢迎拉动请求!)。

自从Jirasearch最初发布以来,它已经引起了用户和开发人员的广泛使用和兴趣。 对我而言,构建并保持它一直运行是一项很棒而令人沮丧的练习,因为我开始体验作为软件“生产”用户的生活。 同时,我们每个人都有一个不错的搜索UI来查找问题。

从Lucene 4.6.x升级到6.x

在过去一周左右的时间里,我还有另一个类似的经历,这次是将Jirasearch从非常老的Lucene 4.6.x版本升级到最新的6.x版本。 很小(但很重要!)的事情发生了变化,例如, 新要求要求将特殊的索引搜索器与ToParentBlockJoinQuery一起ToParentBlockJoinQuery ,这与必须使用DrillSideways发生冲突。 我在中缀提示器中遇到了这个错误 。 纯粹的否定布尔查询发生了一些变化,但是我仍然不确定是什么(我现在已经解决了这个问题)!

我之前已经将Lucene服务器升级到了尺寸标注点,因此可以免费获得Jirasearch中现有数字字段的值 。

Jirasearch的新功能

除了“仅”从Lucene 4.6.x升级到6.x,并将所有数字字段切换为新的尺寸点外,我还添加了一些引人注目的用户可见的改进(感谢Alexandre Rafalovitch提出了一些建议,因此,开始我意外地具有挑战性的升级和改进工作):

  • 最终,“切割@ apache.org”以道格·切特的名字出现! 另外,如果您键入“ Doug”,则自动建议现在可以使用。
  • 新的“ 更新前的构面”维度使您可以深入查看一段时间未更新的问题。
  • 新的“ 最后评论用户”构面维度是最后对问题发表评论的用户。
  • 新的按面提交的维度使您可以深入研究给定开发人员已针对其做出更改的那些问题。
  • 自从从Subversion切换到Git以来,“ 提交的路径”层次结构构面维度已中断,可让您根据问题在源树中更改的路径来查找问题。
  • 现在也包括基础结构项目问题。
  • 对每条注释的文本处理进行了一些小的改进,例如将引用的用户名扩展为其显示名,将commitbot注释链接直接映射到更改集并包括分支名称,以及一些新的同义​​词(尝试pnp !)。

新的方面字段特别有趣:您现在可以通过向下钻取“ 更新前”>“ 1个月前”和“ 最后评论用户=您” (这是亚历山大建议的用例)来查找您可能已杀死的问题。

另一个有趣的地方是看到给定开发人员对源树的不寻常部分( 提交路径 )做出了承诺( 提交),例如, 我针对Lucene Jira问题对Solr做出了更改的问题 。

开源Jirasearch

通过此更新,我还将在luceneserver github项目的examples/jirasearch 子目录下使所有基于Apache 2许可 的jirasearch开源 。

尽管Luceneserver本身完全是Java ,但Jirasearch应用程序的源代码可以从Apache Jira实例中提取所有问题的详细信息,并将这些文档转换为Lucene服务器文档,进行完整和近乎实时的索引编制,从而建立建议,和搜索界面完全是Python。

请注意,Python源代码不是特别漂亮。 但是,它们是功能性的,并且一如既往:欢迎使用补丁程序!

我很可能在升级过程中遇到了麻烦。 如果是这样,请告诉我(在此处添加评论或向我发送电子邮件)。

翻译自: https://www.javacodegeeks.com/2016/10/jirasearch-2-0-dog-food-using-lucene-find-jira-issues.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/351375.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Highcharts教程--把js代码从html中抽离出来,放到单独的一个js文件中。由html页面调用...

1.html页面写法 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>第一个 Highcharts 图表</title><!-- 引入 jquery.js --><script src"static/jquery-3.3.1.min.js"><…

数据结构c语言版第16页,数据结构c语言版

数据结构c语言版[编辑]概述《数据结构C语言版》本书的前半部分从抽象数据类型的角度讨论各种基本类型的数据结构及其应用;后半部分主要讨论查找和排序的各种实现方法及综合分析比较出版信息作/译者&#xff1a;严蔚敏&#xff0c;吴伟民 出版社&#xff1a;清华大学出版社出版日…

C语言申请内存时堆栈大小限制

一直都有一个疑问&#xff0c;一个进程可以使用多大的内存空间&#xff0c;swap交换空间以及物理内存的大小&#xff0c;ulimit的stack size对进程的内存使用有怎样的限制&#xff1f;今天特亲自动手实验了一次&#xff0c;总结如下&#xff1a; 开辟一片内存空间有2种方式&…

微服务之数据同步Porter

Porter是一款数据同步中间件&#xff0c;主要用于解决同构/异构数据库之间的表级别数据同步问题。 背景 在微服务架构模式下深刻的影响了应用和数据库之间的关系&#xff0c;不像传统多个服务共享一个数据库&#xff0c;微服务架构下每个服务都要有自己的数据库。如果你想获得微…

C语言采用多文件的工程结构百度,C语言学习知识复习资料结构框架学习知识重点.doc...

C语言学习知识复习资料结构框架学习知识重点.doc .思维导图1C语言程序设计知识结构第一课 C语言程序设计基础思维导图2第一课 C语言程序设计基础本课主要知识点1.知识点C程序基础l C语言是一种结构化程序设计语言。三种基本结构顺序、选择、循环。例1(2010-09-11)以下关于结构化…

antlr_ANTLR –语义谓词

antlr用antlr解析简单的语法很简单 。 您要做的就是使用正则表达式描述您的语言&#xff0c;并让antlr生成词法分析器和解析器。 解析大型或复杂的语言有时会需要更多&#xff0c;因为仅使用正则表达式描述它们是困难的&#xff0c;甚至是不可能的。 语义谓词是在语法内部编写…

栈大小和内存分部问题

今天面试问了一个栈大小问题&#xff0c;问过两次内存的结构问题&#xff0c;都没有答好&#xff0c;这次要弄清楚才行。 栈大小是有默认值的&#xff0c;如果申请的临时变量太大的话就会超过栈大小&#xff0c;造成栈溢出。 编译期限制栈大小&#xff0c;和系统限制栈深度根本…

ssh登陆报错“WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!”的解决方法

解决方法&#xff1a;删除 ~/.ssh/known_hosts转载于:https://www.cnblogs.com/liangxc/p/10414123.html

android 动态修改菜单,如何在Android的“选项”菜单上更改MenuItem?

如何在Android的“选项”菜单上更改MenuItem&#xff1f;我的Activity上有一个选项菜单&#xff0c;带有mymenu.xml“开始”。 选择此3000128611611048489985后&#xff0c;我想更改菜单&#xff0c;使其包含MenuItem“停止”。 最后&#xff0c;当选择“停止”时&#xff0c;我…

Java性能监控:您应该了解的5个开源工具

鲜为人知但有用&#xff1a;开源应用程序性能监视的状态 对于任何应用程序来说&#xff0c;最重要的事情之一就是性能。 我们要确保用户获得他们能获得的最佳体验&#xff0c;并且要知道我们的应用已启动并正在运行。 这就是为什么我们大多数人至少使用一种监视工具的原因。 …

【BZOJ1069】【SCOI2007】—最大土地面积(凸包+旋转卡壳)

传送门 考虑枚举任意222个点&#xff0c;那么只需要枚举第二个点的时候旋转卡壳就可以O(n)O(n)O(n)得到最远点对了 #include<bits/stdc.h> using namespace std; inline int read(){char chgetchar();int res0,f1;while(!isdigit(ch)){if(ch-)f-f;chgetchar();}while(isd…

如何在vs2010中修改栈的大小

上次运行程序的时候提示栈溢出&#xff0c;oh,my god 程序栈空间不够用了&#xff0c;没关系&#xff0c;可以设置栈的大小&#xff0c;默认是1MB。 选择 项目->属性->链接器->系统->堆栈保留大小,然后输入你想要的栈大小即可。

android第三方登录appid,AndroidQQ第三方登录

集成QQ登录在lib导入该open_sdk_r5886_lite.jar包AndroidManifest.xmlandroid:name"com.tencent.tauth.AuthActivity"android:launchMode"singleTask"android:noHistory"true" >android:theme"android:style/Theme.Translucent.NoTitleB…

Java数组、集合的三种遍历方式(包懂)

1 for循环 for(int i 0;i<arr.length;i){System.out.print(arr[i]" "); } 2 foreach循环&#xff0c;这种方式结构简单&#xff0c;可以简化代码 for(int i:arr){System.out.print(arr[i]" "); } 3 迭代器遍历 对于数组而言&#xff0c;就没必要转换为…

你应当如何学习C++(以及编程)(rev#1)

你应当如何学习C(以及编程)(rev#1) By 刘未鹏(pongba) C的罗浮宫(http://blog.csdn.net/pongba) JavaScript是世界上最受误解的语言&#xff0c;其实C何尝不是。坊间流传的错误的C学习方法一抓就是一大把。我自己在学习C的过程中也走了许多弯路&#xff0c;浪费了不少时间。 为…

android 悬浮窗口和主界面同时显示,Android 悬浮窗口(及解决6.0以上无法显示问题)...

思路实现通过WindowManager添加一个View&#xff0c;创建一个系统顶级的窗口&#xff0c;实现悬浮窗口的效果。本篇思路&#xff0c;来源于郭霖大神的悬浮窗口教程。大致介绍WindowManager 类创建的对象&#xff1a;Context.getSystemService(Context.WINDOW_SERVICE)常用API:a…

谷歌guava_Google Guava BloomFilter

谷歌guava当Guava项目发布版本11.0时&#xff0c;新添加的功能之一是BloomFilter类。 BloomFilter是唯一的数据结构&#xff0c;用于指示元素是否包含在集合中。 使BloomFilter有趣的是&#xff0c;它将指示元素是否绝对不包含或可能包含在集合中。 永远不会出现假阴性的特性使…

CMDB学习之三数据采集

判断系统因为是公用的方法&#xff0c;所有要写基类方法使用&#xff0c;首先在插件中创建一个基类 将插件文件继承基类 思路是创建基类使用handler.cmd ,命令去获取系统信息&#xff0c;然后进行判断&#xff0c;然后去执行 磁盘 &#xff0c;cpu&#xff0c;网卡&#xff0c;…

linux下挂载iso镜像的方法

新建目录/mnt/cdrom 执行命令 mount /dev/cdrom /mnt/cdrom 12[rootocdp1 cdrom]# mount /dev/cdrom /mnt/cdrommount: /dev/sr0 写保护&#xff0c;将以只读方式挂载进入/mnt/cdrom文件夹下发现里面是空的&#xff0c;说明挂载失败。 现在很多发行版中&#xff0c;光驱都不是/…

android onitemclicklistener 参数,android – OnItemClickListener从模型中获取数据

我是Android开发的新手,我正在尝试构建一个ListView,它使用gson从Web服务获取数据.我有一个模型类,一个列表类,一个适配器类和活动类.该列表工作正常,它获得了数据,现在我想将OnItemClickListener集成到它并将数据传递给第二个活动.我想得到项ID(DistrictId)并将其传递给下一个…