Skip to main content

Advanced Search

Sistem pencarian ini menggunakan multi-strategy approach — bukan hanya satu query, melainkan serangkaian strategi yang bekerja bersama untuk menghasilkan hasil yang paling relevan. Setiap strategi memiliki bobot (boost) berbeda yang memengaruhi skor akhir dokumen.


Exact Match

Tujuan: Mencari dokumen yang memiliki teks 100% identik dengan keyword yang dimasukkan.

Ini adalah strategi paling ketat. Field harus mengandung nilai yang persis sama dengan keyword — tidak lebih, tidak kurang.

KeywordField ValueResult
"CloudSync"appname = "CloudSync"Match
"CloudSync"appname = "Sistem CloudSync"No Match

Field Priority

Tujuan: Memberikan bobot lebih tinggi pada match yang ditemukan di field-field penting seperti title, topic, dan appname.

Keyword yang ditemukan di judul jauh lebih relevan dibandingkan keyword yang kebetulan muncul di deskripsi panjang.

KeywordMatch LocationScore
"Dashboard"title = "Analytics Dashboard"Tinggi
"Dashboard"description = "...menggunakan dashboard untuk..."Rendah

Phrase Match

Tujuan: Mencari keyword multi-kata dengan urutan kata yang sama persis (atau mendekati).

Berguna ketika urutan kata dalam keyword memiliki makna berbeda jika dibalik.

KeywordField ValueResult
"User Management""User Management System"Match (urutan sama)
"User Management""Management of User"Lower Score (urutan berbeda)

Prefix Match

Tujuan: Mendukung autocomplete — mencocokkan kata yang dimulai dengan awalan tertentu.

note

Prefix match hanya bekerja dari awal kata. Kata yang mengandung keyword di tengah tidak akan ter-match.

KeywordField ValueResult
"Dash""Dashboard"Match
"Dash""Dashboard Analytics"Match
"Dash""New Dashboard"No Match (tidak diawali "Dash")

Fuzzy Match

Tujuan: Memberikan toleransi terhadap typo berdasarkan edit distance — jumlah operasi (insert, delete, replace) yang diperlukan untuk mengubah satu kata menjadi kata lain.

Keyword (typo)MatchEdit Distance
"Dasboard""Dashboard"1 (kurang h)
"autentication""authentication"1 (kurang h)
"manajemen""management"~4 (beda bahasa)

Wildcard Match

Tujuan: Mencari keyword yang muncul di posisi mana saja dalam sebuah kata atau teks menggunakan pola *keyword*.

KeywordPatternMatch
"cloud"*cloud*"CloudSync"
"cloud"*cloud*"cloud storage"

Multi Word Analysis

Tujuan: Memecah keyword multi-kata menjadi kata-kata individual, lalu mencari dokumen yang mengandung minimal 70% dari kata-kata tersebut.

Keyword: "User Account Management"
Words: ["User", "Account", "Management"]
DocumentWords FoundCoverageResult
"User Account"2/367%No Match
"User Management System"2/367%No Match
"Account Management App"2/367%No Match
"User Account Management"3/3100%Match

Semantic Query

Tujuan: Menggabungkan beberapa field sekaligus dengan bobot berbeda dalam satu query. Dibagi menjadi tiga tipe:

BestFields — Boost: 8.0

Mengambil skor tertinggi dari semua field yang dicari. Field dengan relevansi paling tinggi yang menentukan skor akhir.

Keyword: "Dashboard"

Document 1:
title: "Analytics Dashboard" → Score: 12.0 × 8.0 = 96.0
description: "sistem untuk monitoring" → Score: 0
→ Final = MAX(96.0, 0) = 96.0

Document 2:
title: "New Application" → Score: 0
description: "menggunakan dashboard..." → Score: 3.0 × 8.0 = 24.0
→ Final = MAX(0, 24.0) = 24.0

Rank: Document 1 (96) > Document 2 (24)

Phrase — Boost: 18.0

Mencari urutan kata yang sama di semua field. Mendapat boost tertinggi karena tingkat presisi paling tinggi.

Keyword: "User Management"

Document 1 — title: "User Management System"
→ Match (urutan sama) → Score: 15.0 × 18.0 = 270.0

Document 2 — title: "Management of User"
→ No Match (urutan berbeda) → Score: 0

Document 3 — appname: "User Management App"
→ Match → Score: 14.0 × 18.0 = 252.0

CrossFields — Boost: 12.0

Memperlakukan semua field sebagai satu field besar. Memungkinkan keyword yang tersebar di field berbeda tetap ter-match.

Keyword: "User Analytics"

Document 1:
title: "Analytics Overview" ← ada "Analytics"
appname: "User Dashboard" ← ada "User"
→ Match (kata ketemu di field berbeda) → Score: 12.0

Document 2:
title: "New System"
appname: "Data App"
→ No Match

Numeric Field Query

Boost: 25.0 (exact) / 20.0 (string)

Tujuan: Mencari nilai numerik atau ID secara exact match. Memastikan ketika user memasukkan angka seperti ID atau kode, hasil yang tepat langsung muncul di posisi teratas.

KeywordFieldResult
"42"id = 42 (integer)Match
"42"id = "42" (string)Match

Boost Strategy

Kenapa Perlu Boost?

Tanpa boost, semua field dianggap sama pentingnya — padahal match di appname jauh lebih relevan daripada match di description.

Boost Hierarchy

PriorityStrategyBoost
1Exact Match .keyword50
2Phrase Match40
3Numeric Exact25
4Field Priority High / Numeric String20
5Prefix / Semantic Phrase18
6Phrase with Slop16
7Field Priority Medium / Wildcard prefix12
8Fuzzy / Wildcard contains / Semantic BestFields8
9Multi-Word5
10Low Priority Fields1.5

Contoh Alur Query: Input "Cloud"