3
2
1

Jiraをオンプレ環境で動かしています。

例えば課題の要約に「車」の文字が入っている課題を検索したいときがあります。

現状「summary ~ "車"」 で検索すると

「車 エンジントラブル」

などが検索結果に表示されますが

「車載 トラブル」

「自動車 トラブル」

がヒットしません。

1文字で検索したときに「車載」「自動車」がヒットするようにするにはどうしたらいいでしょうか?

    Commentコメントを追加...

    1 回答

    1.  
      4
      3
      2

      参考QA


      Jiraのテキスト検索結果は参考QAの通りインデックス作成言語に依存するため、この問題もインデックス作成言語によって少し振る舞いが変わります。

      ※ インデックス作成言語によってLuceneの検索処理が違うので。


      CJK(中国語/日本語/韓国語)を設定している場合 CJKAnalyzer で CJKTokenizer です。

      これを設定している場合、日本語などの文字列は2文字ずつに分割してインデックスされます。

      所謂Bigramです。英語や数字などは空白などで単語が切れない場合、基本的には単語としてインデックスされます。

      細かい動きの話はJiraで検索するよりもLuceneについて紹介している内容が詳しいのでGoogleで確認してください。


      その他を設定している場合、SimpleAnalyzer で ClassicTokenizer   です。

      これを設定している場合、日本語などのマルチバイト文字列は1文字ずつに分割してインデックスされます。

      所謂Unigramです。英語や数字などは空白などで単語が切れない場合、基本的には単語としてインデックスされます。細かい動きの話はJiraで検索するよりもLuceneについて紹介している内容が詳しいのでGoogleで確認してください。


      つまり、「その他」を設定して再インデックスすれば、日本語で1文字の検索はできるようになります。

      今回のような検索処理が希望される場合は、「その他」に変更することもよいかと思います。


      ちなみにCJK(中国語/日本語/韓国語)でも

       テキストフィールドの検索構文 - アトラシアン製品ドキュメント ワイルドカード検索:? および *

      より「車」で始まるものであれば

      summary ~ "車*"

      summary ~ "車" OR  summary ~ "車?"

      でヒットするようになります。

      但しこの場合「自動車」のような単語がヒットしません。


      summary ~ "*車*"

      のような検索ができたらいいのですが残念ながら、先頭にワイルドカードを指定する先部分一致のような検索ができません。

      以下製品要望もありましたが残念ながら Won't Fix となりました。


      この場合の回避策としては Jiraで[ ] の検索が期待通りに動かない で紹介している

       ScriptRunner for Jira (ティック) 有償 アドオンのJQL関数機能で正規表現で検索する 

      issueFieldMatch、issueFieldExactMatch 関数がありますので、これを使う方法があります。

      https://scriptrunner.adaptavist.com/latest/jira/jql-functions.html#_issuefieldmatch