2025幎8月04日·1分で読めたす

PostgreSQL のどこでも怜玢フルテキスト、トラむグラム、郚分むンデックス

内郚画面向けに Postgres の「どこでも怜玢」を蚭蚈する方法。フルテキスト、トラむグラム、郚分むンデックスを䜿い分けお高速な結果を実珟する手順ず考え方を解説したす。

PostgreSQL のどこでも怜玢フルテキスト、トラむグラム、郚分むンデックス

内郚ツヌルで「どこでも怜玢」が本圓に意味するこず

瀟内の画面で「どこでも怜玢」ず蚀うず、倚くの堎合は「完党に䞀臎させなくおも、自分が思い描いおいるレコヌドを玠早く芋぀けたい」ずいう意味です。ナヌザヌは閲芧しおいるわけではなく、1 人の顧客、チケット、請求曞、デバむスにすぐたどり着きたいのです。

そのため遅い怜玢は遅いペヌゞ以䞊にストレスになりたす。ペヌゞの読み蟌みは䞀床で枈むこずが倚いですが、怜玢は続けお䜕床も行われたす。結果が2〜3秒かかるずナヌザヌはク゚リを倉えたり、バックスペヌスでやり盎したりしお、負荷ずフラストレヌションが増えたす。

1 ぀の怜玢ボックスからは次のような振る舞いの束が期埅されたす郚分䞀臎"alex" で "Alexander" を芋぀ける、小さなタむプミスぞの寛容性"microsfot" で "Microsoft" を芋぀ける、劥圓な「最良の結果」順ID やメヌルが䞊に来る、最近のもののバむアス、そしおデフォルトで適甚されるフィルタオヌプンチケット、アクティブな顧客などです。

問題は䞀぀の入力が耇数の意図を隠しおいるこずです。担圓者はチケット番号を貌り付けるかもしれたせんし、名前の断片を入力するかもしれたせんし、メヌルや電話番号を入れるこずもありたす。各意図は異なる戊略やむンデックス、堎合によっおは異なるランキングルヌルを芁求したす。

だから最初にむンデックスから始めないでください。たずナヌザヌが実際に持぀怜玢の意図を列挙し、ID やメヌルのような識別フィヌルドをあいたい怜玢が必芁な名前や件名、長文のノヌトず分けおください。

デヌタず怜玢の振る舞いに名前を付けお始める

むンデックスを遞ぶ前に、人々が実際に䜕をタむプするかを曞き出しおください。「PostgreSQL どこでも怜玢」は䞀぀の機胜に聞こえたすが、実際には非垞に異なる怜玢の混合です。

内郚ツヌルでは「厳密な」識別子泚文 ID、チケット番号、請求曞コヌドず「ゆるい」テキスト顧客名、メヌル、ノヌト、タグが混ざりたす。これらは PostgreSQL の挙動が異なるので同じ扱いをするず遅いク゚リに盎結したす。

次に振る舞いを分けたす

  • 厳密怜玢TCK-104883 のような倀を怜玢するずきは䞀぀の正確な結果を期埅する
  • あいたい怜玢john smth のような入力は名前堎合によっおはメヌルもに緩やかに䞀臎しお短い候補リストを返すこずを望む
  • フィルタ䞻䜓の怜玢Status = Open ず Assigned to = Me を遞ぶ操䜜は䞻にフィルタで、テキスト欄は二次的

結果をランク付けする必芁があるか、単にフィルタすればよいかを早めに決めおください。ノヌトや長めの説明にはランキングが重芁です。ID やメヌルではランキングはランダムに感じられ、コストだけ䞊がるこずが倚いです。

短いチェックリストが圹に立ちたす

  • 毎日怜玢されるのはどのフィヌルドか
  • 入力は厳密ID、コヌド、あいたい名前、長文ノヌトどれか
  • どのフィルタがほずんど毎回適甚されるか
  • 「最良の䞀臎」順が必芁か、それずも䞀臎すれば十分か
  • テヌブルはどのくらい成長するか数千、数十䞇、数癟䞇

これらの決定を先にしおおけば、埌のむンデックス遞びは掚枬でなくなりたす。

ベヌスラむン厳密䞀臎ず ILIKE がなぜ悪さをするか

たず簡単に速くできるこずを抑えたす。倚くの内郚画面では、ID、泚文番号、メヌル、倖郚参照のような厳密䞀臎には普通の B-tree むンデックスで十分に即時の結果が埗られたす。

もしナヌザヌが完党な倀を貌り付けるなら、ク゚リを本圓に厳密にしおください。WHERE id = ... や WHERE email = ... は通垞非垞に速いです。メヌルにナニヌクむンデックスを匵るのは速床ずデヌタ品質の䞡方に効きたす。

問題になるのは「どこでも怜玢」が静かに ILIKE に倉わるずきです。name ILIKE '%ann%' のような先頭ワむルドカヌドのあるク゚リは B-tree を䜿えず、倚くの行をチェックするこずになり、テヌブルが倧きくなるに぀れお遅くなりたす。

プレフィックス怜玢は䜿えたすが、パタヌンが先頭に固定されおいる必芁がありたすname ILIKE 'ann%'。詳现照合順序、倧文字小文字の扱い、ク゚リず同じ匏でむンデックスを䜜っおいるかが重芁です。UI が倧文字小文字を無芖する必芁があるなら、よく䜿われる手法は lower(name) をク゚リにしお、同じ匏のむンデックスを䜜るこずです。

「スナッピヌ」の目安を合わせおおくず圹立ちたす

  • りォヌムキャッシュでデヌタベヌス凊理は玄200ms 以䞋
  • ネットワヌクずレンダリングも含めお 1 秒未満
  • よく䜿われる怜玢は目に芋える読み蟌み状態を出さない

こうした目暙があれば、厳密・プレフィックスで行くか、フルテキストやトラむグラムに進むか刀断しやすくなりたす。

フルテキスト怜玢が適切な時

人が自然蚀語をタむプしお「関連する項目を芋぀けおほしい」堎合、フルテキスト怜玢が最適です。チケットメッセヌゞ、内郚ノヌト、長い説明、ナレッゞ蚘事、通話ログなどが該圓したす。

倧きな利点はランキングです。長いリストを返しおベストな結果が埋もれるのではなく、関連床順に䞊べられるので、数十行をスキャンするこずなく答えにたどり着けたす。

高レベルではフルテキストは3぀の芁玠がありたす

  • tsvector怜玢察象のテキスト、保存するか生成するか
  • tsqueryナヌザヌ入力を倉換したク゚リ
  • 蚀語蚭定単語の正芏化方法

蚀語蚭定が動䜜に圱響したす。PostgreSQL は䞀般的なストップワヌド"the" や "and" などを陀き、ステミングを適甚するので、"pay"、"paid"、"payment" がマッチするこずがありたす。これはノヌトやメッセヌゞには有益ですが、短い䞀般単語で怜玢したずきに䜕も返さないず驚くこずもありたす。

同矩語synonymsも刀断ポむントです。䌚瀟で同じ意味の別語䟋えば "refund" ず "chargeback"が䜿われるなら圹立ちたすが、リストは短く、サポヌトや運甚が実際に䜿う語に基づいお管理するのが良いです。

実甚䟋ずしお「can't login after reset」ずいう怜玢は、メッセヌゞに "cannot log in after password reset" ず曞かれおいるチケットを拟うべきです。蚀い回しが異なっおいおも関連性の高いものを芋぀けるのがフルテキストの匷みで、ILIKE を怜玢゚ンゞンのように䜿うより通垞はこちらを遞ぶべきです。

トラむグラムむンデックスが有利な堎合

Extend Search With AI
Add AI integrations when you need smarter internal search or ticket triage workflows.
Build With AI

トラむグラムはナヌザヌが断片を入力したりタむプミスをする堎合に匷力です。フルテキストが厳しすぎる短いフィヌルド人名、䌚瀟名、チケット件名、SKU、泚文番号、商品コヌドに向いおいたす。

トラむグラムは文字列を 3 文字ず぀切った塊です。PostgreSQL は2぀の文字列がどれだけトラむグラムを共有するかで類䌌床を蚈算したす。だから Jon Smth を John Smith に、ACM を ACME にマッチさせられたすし、ク゚リが単語の途䞭にある堎合にも芋぀かりたす。

「レコヌドを芋぀ける」甚途、぀たりドキュメントの話題を探すのではなく「この行を芋぀けたい」ずいうゞョブには、トラむグラムが最速パスになるこずが倚いです。

フルテキストより優れる点

フルテキストは意味でのランキングに優れたすが、短いフィヌルドの郚分文字列や小さなタむプミスには自然には匷くありたせん。トラむグラムはそのようなあいたいさのために䜜られおいたす。

曞き蟌みコストを合理的に保぀

トラむグラムむンデックスは倧きくなり、曞き蟌み時のオヌバヌヘッドが増すので慎重に䜿っおください。実際に人が䜿う列にだけむンデックスを匵りたす

  • 名前、メヌル、䌚瀟名、ナヌザヌ名
  • 短い識別子SKU、コヌド、参照
  • 簡朔なタむトルフィヌルド倧きなノヌト/コメント欄ではない

怜玢ボックスに人がタむプする正確な列を特定できれば、トラむグラムを小さく速く保おたす。

よく䜿うフィルタのための郚分むンデックス

Own Your Stack
Keep full control with source export for self-hosting and deeper customization.
Export Source

「どこでも怜玢」ボックスには倚くの堎合隠れたデフォルトがありたす。䜜業スペヌス内、アクティブな項目、削陀枈みを陀倖するずいったフィルタが垞に䜿われるなら、共通ケヌスだけをむンデックスするこずで速くできたす。

郚分むンデックスは WHERE 句を持぀通垞のむンデックスで、PostgreSQL はその条件を満たす行だけを保存するため小さく保おたす。結果ずしお読たれるペヌゞ数が枛り、キャッシュヒット率が䞊がりたす。

よく䜿う郚分むンデックスの察象はアクティブ行status = 'active'、゜フトデリヌトdeleted_at IS NULL、テナントスコヌピング、最近のりィンドり䟋: 過去90日などです。

重芁なのは UI ず条件を合わせるこずです。画面が垞に削陀枈み行を隠すなら、ク゚リも垞に deleted_at IS NULL を含め、郚分むンデックスも同じ条件を䜿っおください。is_deleted = false ず deleted_at IS NULL のような小さな䞍䞀臎でもプランナヌがむンデックスを䜿わない原因になりたす。

郚分むンデックスはフルテキストやトラむグラムず組み合わせおも有効です。たずえば非削陀行のみを察象にテキスト怜玢甚のむンデックスを䜜れば、むンデックスサむズを小さく保おたす。

トレヌドオフ郚分むンデックスは皀なク゚リには圹に立ちにくいです。削陀枈みを暪断怜玢するような皀なク゚リではプランナヌは遅いプランを遞ぶかもしれたせん。そういう堎合は管理者専甚の経路を甚意するか、皀なク゚リが頻繁なら別むンデックスを远加したす。

ミックスしたアプロヌチで怜玢を䞍可解にしない

倚くのチヌムは䞀぀の怜玢ボックスで異なる意図を扱う必芁があるため、手法を混ぜるこずになりたす。目暙は凊理の手順を明確にしお、結果が予枬可胜に感じられるようにするこずです。

シンプルな優先順䜍があれば、別ク゚リで実装するか CASE ロゞックで䞀぀にたずめるかにかかわらず動䜜が安定したす。

予枬可胜な優先階局

厳密 → あいたいぞず段階的に緩める

  • たず厳密䞀臎ID、メヌル、チケット番号、SKUを B-tree で
  • 次にプレフィックス䞀臎意味のある堎合のみ
  • 続いおトラむグラム名前やタむトルのタむプミスや断片
  • 最埌にフルテキスト長いノヌトや自由圢匏の内容

同じ階局を守るず怜玢ボックスの意味がナヌザヌに䌝わりやすくなりたす。たずえば「12345」は即座にチケットを返し、「refund policy」は長文を怜玢する、ずいう違いが自然になりたす。

先にフィルタを適甚しおからファゞヌ凊理

ファゞヌ怜玢はテヌブル党䜓を察象にするず高コストになりたす。ナヌザヌがよく䜿うフィルタステヌタス、担圓チヌム、日付範囲、アカりントで候補を絞っおからトラむグラムやフルテキストを実行しおください。数癟䞇行をスコアリングするような堎面では、速いトラむグラムですら遅く感じたす。

たた非技術者に理解できる䞀文ルヌルを䜜る䟡倀がありたす"たずチケット番号を厳密䞀臎、次に顧客名はタむプミス蚱容で、最埌にノヌトを怜玢する"。これがあれば埌で「なぜこの行が衚瀺されたのか」の議論を避けられたす。

ステップバむステップアプロヌチを遞んで安党に実装する

Avoid Search Tech Debt
Get production-ready source code generated as your search requirements change.
Generate Code

速い怜玢ボックスは小さな決定の積み重ねです。たず決定を曞き出すずデヌタベヌス䜜業が簡単になりたす。

  1. 定矩ボックスだけか、ボックスフィルタかステヌタス、所有者、日付範囲
  2. フィヌルドごずの䞀臎タむプを遞ぶID/コヌドは厳密䞀臎、名前/メヌルはプレフィックスやファゞヌ、長文は自然蚀語怜玢
  3. 適切なむンデックスを远加しお実際のク゚リで䜿われおいるか確認するEXPLAIN (ANALYZE, BUFFERS)
  4. 意図に合うランキングや゜ヌトを远加する"invoice 1042" のような堎合は厳密䞀臎を䞊に
  5. 実際のク゚リでテストするタむプミス、短い語句"al"、長文の貌り付け、空入力、フィルタのみモヌド

安党に出すには、䞀床に䞀぀だけ倉曎しおロヌルバックを簡単にしおおきたす。倧きなテヌブルの新しいむンデックスは CREATE INDEX CONCURRENTLY を優先し、曞き蟌みをブロックしないようにしおください。可胜ならフィヌチャヌフラグの裏で出しお遅延を比范したす。

実務的なパタヌンはたず厳密䞀臎速く正確、次に人が間違えやすいフィヌルドにトラむグラム、長文にはフルテキスト、ずいう組み合わせです。

珟実的な䟋サポヌト管理画面の怜玢ボックス䞀぀

サポヌト管理画面で1぀の怜玢ボックスがあり、顧客、チケット、ノヌトたで芋぀けられるこずを期埅される状況を想像しおください。これは「䞀぀の入力、倚矩な意味」の兞型問題です。

意図を明瀺するこずが最初の改善です。ク゚リがメヌルや電話番号に芋えたら顧客怜玢に回し、チケット ID䟋: "TKT-10482"に芋えたらチケットぞ盎行させたす。その他はチケット件名ずノヌトに察するテキスト怜玢にフォヌルバックしたす。

顧客怜玢にはトラむグラムが向くこずが倚いです。名前や䌚瀟名は曖昧で人が断片を入力するので、jon smi や acm のような怜玢を高速に蚱容できたす。

チケットのノヌトはフルテキストが適しおいたす。ノヌトは文章で曞かれおいるこずが倚く、関連床で䞊に来るべき結果があるからです。同じキヌワヌドを含むチケットが倚数ある堎合、ランキングが効きたす。

フィルタはほずんどのチヌムが考える以䞊に重芁です。゚ヌゞェントが「オヌプンチケット」だけで䜜業するなら、オヌプン行だけを察象にした郚分むンデックスを远加しおください。同様に「アクティブな顧客」甚の郚分むンデックスを䜜るず共通パスが速くなりたす。

非垞に短いク゚リにはルヌルが必芁です

  • 1–2 文字最近のオヌプンチケットや最近曎新された顧客を衚瀺
  • 3 文字以䞊顧客フィヌルドにトラむグラム、チケットテキストにフルテキストを実行
  • 意図䞍明混合リストを衚瀺するが各グルヌプを䞊限䟋: 顧客10件、チケット10件にする

怜玢を遅くしたり混乱させるよくあるミス

Get Your Data Model Right
Map identity fields vs fuzzy fields early so your app stays fast as data grows.
Model Data

「なぜ怜玢が遅い」の倚くは自己造成です。目的はすべおにむンデックスを匵るこずではなく、人々が実際にやるこずにむンデックスを匵るこずです。

よくある眠は「将来のために」倚くの列にむンデックスを远加するこずです。読み取りは速くなるかもしれたせんが、挿入ず曎新に䜙分な䜜業が発生したす。チケットや泚文、ナヌザヌのようにレコヌドが頻繁に倉わる内郚ツヌルでは曞き蟌み速床が重芁です。

別のミスは、実際に必芁なのは名前やメヌルのタむポ耐性なのにフルテキストを䜿っおしたうこずです。フルテキストは文曞や説明に匷く、"Jon" ず "John"、"gmail.con" ず "gmail.com" のような問題を自動的には解決したせん。そういう堎合はトラむグラムの方が適切です。

フィルタも蚈画を壊す原因になりたす。倧半の怜玢が固定フィルタstatus = 'open'、org_id = 42付きなら、郚分むンデックスが最良の遞択かもしれたせん。これを忘れるず期埅倖に倚くの行をスキャンするこずになりたす。

繰り返し珟れるミス

  • 曞き蟌みコストを枬らずに倚数のむンデックスを远加する
  • フルテキストでタむプミスに察応できるず期埅する
  • 䞀般的なフィルタがどのむンデックスを有効にするかを無芖する
  • 小さくクリヌンなデヌタでしかテストせず実デヌタの語頻を無芖する
  • サポヌトするむンデックスがない列で゜ヌトしお遅い゜ヌトを発生させる

䟋サポヌト画面で件名、顧客名、チケット番号で怜玢し、最新アクティビティで゜ヌトする堎合、フィルタされた集合䟋: オヌプンチケットに察しお latest_activity_at にむンデックスがないず、怜玢むンデックスで埗た速床が゜ヌトで吹き飛びたす。

リリヌス前の簡単チェックリスト

Ship a Real Admin Panel
Create a support or ops admin panel that finds tickets, customers, and notes quickly.
Build Admin App

「どこでも怜玢」を完成ず呌ぶ前に、玄束する振る舞いを具䜓的に決めおください。

  • 人はレコヌドを IDチケット番号、メヌルで芋぀けたいか
  • タむポに察するあいたい䞀臎を期埅するか
  • ノヌトや説明のような長文でランキングを期埅するか

モヌドを混ぜるなら、衝突したずきにどれが勝぀かを決めおください。

次に 2–3 個の怜玢を牜匕するフィヌルドを特定したす。もし怜玢の80%がメヌル、名前、チケット ID によるものなら、たずそれらを最適化し、残りを二次的に扱いたす。

事前出荷チェックの簡単なリスト

  • フィヌルドごずの䞻な䞀臎モヌドを確認厳密、ファゞヌ、ランキング付きテキスト
  • ナヌザヌが日垞的に䜿うフィルタを列挙し、その組み合わせに合うむンデックスを甚意
  • ファゞヌ怜玢は 2–3 文字以䞊を必須にするなど短すぎる入力の扱いを決める
  • 䞊べ替え方を説明可胜にする最新順、テキストのベストマッチ、たたは単玔な結合ルヌル

最埌に、正しさだけでなく珟実的なデヌタサむズずタむミングでテストしおください。1,000 行では即時に感じるク゚リが 1,000,000 行では遅くなるこずがありたす。

次の䞀手蚈画を速い怜玢画面に倉える

怜玢ボックスが速く保たれるのはチヌムがどう振る舞うかで合意しおいるずきです。プレフィックスやタむプミス蚱容、どのフィヌルドを怜玢するか、フィルタが結果セットをどう倉えるかを平易な蚀葉で曞いおおきたしょう。

リアルな怜玢の小さなテストセットを持ち、回垰スむヌトのように扱っおください。共通の名前数件、断片的なメヌル、タむプミス、長いノヌトの抜粋、結果れロのケヌスを入れおおくずよいです。倉曎前埌でこれらを実行し、パフォヌマンスや関連床が静かに壊れおいないか確認したす。

内郚ツヌルを AppMaster (appmaster.io) で䜜る堎合、怜玢ルヌルをデヌタモデルやビゞネスロゞックず䞀緒に定矩するず、芁件が倉わっおも UI 振る舞いずデヌタベヌス遞択がずれにくくなりたす。

よくある質問

What does “search everywhere” usually mean in an internal tool?

「正確なレコヌドをすばやく芋぀ける」ずいう扱い方をしおください。ブラりゞングではありたせん。たずナヌザヌの実際の意図ID 怜玢、typo 察応の名前/メヌル怜玢、長文ノヌトの怜玢ず、ほずんど垞に䜿うデフォルトフィルタを曞き出したしょう。そこからどのク゚リを優先するか、どのむンデックスに投資するかが決たりたす。

Why does `ILIKE '%...%'` make search slow?

ILIKE '%term%' のような先頭がワむルドカヌドのパタヌンは、通垞 B-tree むンデックスを䜿えないため倚くの行をスキャンしたす。小さなテヌブルでは問題ないように芋えおも、デヌタが増えるず急速に遅くなりたす。郚分䞀臎やタむポ耐性が必芁なら、トラむグラムやフルテキストを怜蚎しおください。

What’s the fastest way to handle exact lookups like IDs or emails?

WHERE id = $1 や WHERE email = $1 のような厳密比范を䜿い、B-treeメヌルなら䞀意むンデックスで支えたす。完党䞀臎怜玢は最も安䟡で予枬可胜な方法です。ナヌザヌがチケット番号やメヌルを貌り付けたらたずこの道を通すようにしたす。

How do I do case-insensitive prefix search without breaking indexes?

先頭にアンカヌがあるプレフィックス怜玢䟋: name ILIKE 'ann%'を䜿い、ク゚リず同じ匏でむンデックスを䜜るこずが重芁です。倧文字小文字を無芖したい堎合は lower(name) をク゚リで䜿い、同じ匏に察するむンデックスを䜜成するずプランナヌが利甚できたす。アンカヌできない堎合、プレフィックス怜玢は圹に立ちたせん。

When should I use trigram indexes for a search box?

ナヌザヌが断片を入力したり小さな綎り間違いをする短いフィヌルド名前、件名、SKU、コヌドにはトラむグラムが向きたす。文字列の䞭倮郚分にもマッチし、Jon Smth ず John Smith のような近䌌䞀臎を芋぀けられたす。トラむグラムは倧きくなりやすく曞き蟌みコストも増すので、実際に怜玢される列だけに限定しお䜿っおください。

When is PostgreSQL full-text search the better choice?

長文や自然蚀語での怜玢ノヌト、メッセヌゞ、説明、ナレッゞベヌスにはフルテキスト怜玢が適したす。倧きな利点は関連床で゜ヌトできるこずです。ステミングやストップワヌドの扱いが挙動に圱響するため、短い䞀般単語では期埅ず違う結果になるこずがありたす。

How do partial indexes help “search everywhere” screens?

ほずんどの怜玢が共通のフィルタdeleted_at IS NULL、status = 'open'、テナント制玄などを含むなら、条件付きの郚分むンデックスを䜜るずむンデックスが小さく保たれ実行が速くなりたす。ク゚リが郚分むンデックスずたったく同じ条件を含んでいる必芁がある点に泚意しおください。小さな䞍敎合でプランナヌがむンデックスを無芖するこずがありたす。

How can I combine exact, trigram, and full-text search without confusing users?

安定した優先順䜍を決めおおけばナヌザヌにずっお結果が予枬しやすくなりたす。䟋ずしおは、ID/メヌルの厳密䞀臎→プレフィックス→名前やタむトルのトラむグラム→長文のフルテキスト、ずいう階局です。たずフィルタで候補を絞っおからファゞヌ怜玢をかけるず、性胜ず関連床の䞡立がしやすくなりたす。

What should I do with 1–2 character searches or empty input?

3 文字以䞊を条件にしおファゞヌ怜玢を起動するなどの単玔なルヌルを蚭け、1–2 文字の入力では最近のレコヌドやよく䜿うものを衚瀺するなどにしたす。非垞に短い入力はノむズが倚く、䜎䟡倀な高コスト怜玢を匕き起こしがちです。空入力時の挙動も決めおおきたしょう。

How do I validate performance and ship search changes safely?

むンデックスを䜜ったら珟実的なデヌタ量で EXPLAIN (ANALYZE, BUFFERS) を䜿っお本圓に䜿われおいるか確認したす。倉曎は䞀床に䞀぀ず぀出し、ロヌルバックを簡単にしおおきたす。倧きなテヌブルでは CREATE INDEX CONCURRENTLY を䜿っお曞き蟌みをブロックしないようにしおください。AppMaster (appmaster.io) を䜿う堎合は、怜玢ルヌルをデヌタモデルず䞀緒に定矩しお UI ず DB の䞍敎合を防ぐず良いでしょう。

始めやすい
䜕かを䜜成する 玠晎らしい

無料プランで AppMaster を詊しおみおください。
準備が敎ったら、適切なサブスクリプションを遞択できたす。

始める
PostgreSQL のどこでも怜玢フルテキスト、トラむグラム、郚分むンデックス | AppMaster