使用Lucene的搜索服务器搜索Jira问题
您可能還記得我的第一篇博客文章,其中描述了Lucene開發(fā)人員如何使用Lucene搜索應用程序查找我們的Jira問題來食用我們自己的狗食。
該應用程序已成為許多Lucene現(xiàn)代功能的強大展示,例如側(cè)向鉆取和動態(tài)范圍刻面, 基于中綴匹配的新建議 , 發(fā)布熒光筆 ,塊聯(lián)接查詢,因此您可以跳轉(zhuǎn)到與您的匹配的特定問題注釋搜索,近實時索引和搜索等。每當新用戶向我詢問Lucene的功能時,我都會將他們指向該應用程序,以便他們可以自己查看。
最近,我取得了一些進一步的進展,因此我想進行更新。
簡單的基于Netty的Lucene服務器的源代碼現(xiàn)在可以在此subversion分支上使用 (有關詳細信息,請參閱LUCENE-5376 )。 我一直在逐步增加其他Lucene模塊的覆蓋范圍,包括構面,建議程序,分析,queryparsers,突出顯示,分組,聯(lián)接和表達式。 當然還有正常的索引和搜索! 還有許多工作要做(有很多未提交的內(nèi)容),此處的目標不是構建功能豐富的搜索服務器,而是演示如何在服務器上下文中使用最少的“瘦服務器”附加源代碼使用Lucene當前的模塊。
另外,為了測試此基于Lucene的新服務器并完成“狗食”,我構建了一個簡單的Jira搜索應用程序插件,以幫助我們在此處找到Jira問題。 該應用程序具有各種Python工具,可以使用Jira的REST API和作為Python WSGI應用程序運行的用戶界面層提取和索引Jira問題,以將請求發(fā)送到服務器并將響應呈現(xiàn)回用戶。 該Jira搜索應用程序的目標是使它易于指向任何Jira實例/項目,并能夠?qū)λ袉栴}進行全面搜索。
我只是對生產(chǎn)站點進行了進一步的更改:
- 我將Jira搜索應用程序升級到當前服務器分支(以前它在我的私有fork上運行)。
- 我將所有分析組件都切換到了Lucene的分析工廠。 這些工廠使用Java的SPI(服務提供商接口),以便服務器可以訪問類路徑中的任何字符過濾器,令牌化器和令牌過濾器。 這在構建服務器時非常有幫助,因為這意味著您不需要任何特殊的代碼即可處理Lucene如今提供的大量分析組件。 一切都簡單地通過了工廠(工廠知道如何解析自己的論點)。
- 我已經(jīng)添加了Tika項目,所以現(xiàn)在您也可以找到Tika問題。 添加起來非常簡單,并且似乎可以正常工作!
- 我插入了WordDelimiterFilter以便拆分CamelCaseTokens。 例如,嘗試搜索中綴并記下高亮。 正如Rober Muir提醒我的那樣, WordDelimiterFilter會破壞偏移量,在某些情況下,偏移量會使突出顯示混亂,因此我將嘗試設置ICUTokenizer (我已經(jīng)在使用它)來進行拆分。
- 在您進行文本搜索時,默認情況下,我切換到Lucene的新表達式模塊來進行相關性+新近度排序,這很有用,因為大多數(shù)時候我們都在尋找最近接觸的問題。 以前,我使用自定義FieldComparator來實現(xiàn)相同的功能,但是表達式更加緊湊和強大,可以刪除該自定義FieldComparator 。
- 我切換到的建議近乎實時的建設,使用AnalyzingInfixSuggester 。 以前,我每隔五分鐘就完全重建一次建議程序,所以這節(jié)省了很多CPU,因為現(xiàn)在我只是在問題出現(xiàn)時添加新的Jira問題并刷新建議程序。 這也意味著從添加索引到建議索引之間的延遲要短得多。 有關詳細信息,請參見LUCENE-5477 。
- 我現(xiàn)在每天commit一次。 以前,我從不承諾,只是依靠近實時搜索。 這工作得很好,除非當我需要關閉服務器時(例如,推出新更改),它需要完全重新索引,這是非常快的,但是對于那些在搜索過程中偶然進行搜索的用戶來說,體驗很差。 現(xiàn)在,當我啟動服務器時,它又回到了最后一次提交,然后近實時索引Swift趕上了自最后一次提交以來發(fā)生的任何已更改問題。
- 各種小問題,例如重命名Jira問題時的正確處理(Jira REST API很難發(fā)現(xiàn)這一點!); 更好的生產(chǎn)推動自動化; 升級到引導 UI庫的更新版本。
此Jira搜索應用程序仍需進行大量改進。 對于具有許多可能的向下鉆取值的字段,我想使用一個簡單的建議程序,以便用戶可以快速向下鉆取。 我想修復建議程序,以根據(jù)項目過濾建議。 例如,如果您深入研究了提卡問題,那么當您輸入新搜索時,您應該只會看到建議的提卡問題。 為此,我們需要使AnalzyingInfixSuggester上下文感知 。 我還想為所有方面字段提供更緊湊的UI; 也許我需要在“更多”下隱藏不常用的構面字段...
翻譯自: https://www.javacodegeeks.com/2014/03/using-lucenes-search-server-to-search-jira-issues.html
總結
以上是生活随笔為你收集整理的使用Lucene的搜索服务器搜索Jira问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java Enterprise软件与应有
- 下一篇: 电脑键盘怎么清洗如何清理笔记本电脑键盘