Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

gitlab-ce(v10.2.5)で2文字以下の検索結果がおかしい件

More than 3 years have passed since last update.

背景

普通にsearchを利用するんですが、2文字以下の場合issueの検索結果がおかしい。
英語/日本語問わず、2文字以下の場合の結果でissueだけ全件でてきてしまう。3文字以上だと問題なく動作するのに、何故・・・

英語の場合、2文字以下になると検索結果が膨大になってしまうのはわかりますが、日本語の場合、2文字の検索はよくある気がします。

日本語で書かれたissueを検索する場合、不便なので少し調べてみました。

関連する部分を探す

探していると以下のソースに最終的にぶち当たりました。
lib/gitlab/sql/pattern.rb

lib/gitlab/sql/pattern.rb
module Gitlab
  module SQL
    module Pattern
      extend ActiveSupport::Concern

      MIN_CHARS_FOR_PARTIAL_MATCHING = 3
      REGEX_QUOTED_WORD = /(?<=\A| )"[^"]+"(?= |\z)/

...

        def partial_matching?(query)
          query.length >= MIN_CHARS_FOR_PARTIAL_MATCHING
        end
...

MIN_CHARS_FOR_PARTIAL_MATCHINGまさにこれです。
3文字以上じゃないと動作しないようになっていました。

MIN_CHARS_FOR_PARTIAL_MATCHINGを1に変更したら1文字でも検索が動くようになりましたがどうなんでしょうか・・・

追記

やはり、上記の修正を行うとパフォーマンスに影響があるようです。
規模が大きい場合は非推奨とのことでした。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away