Ez a szabálykönyv nyilvános, mert olyat nem naplózunk, aminek a szabályát ne mernénk kitenni ide. Lejjebb ott van a teljes naplósor, amit egy látogatásból megtartunk, és a besoroló forráskódja — ugyanaz, ami a szerveren fut.
Frissítve: 2026. november 9.Build: HogyanMerunk b1Forrás: kereses_besorolo.py · 242 sor
01
A rövid válasz
A keresőbe beírt szöveget nem tároljuk.
A kérés feldolgozásakor, a memóriában eldöntjük, hogy a keresés milyen típusú volt — és a naplóba már csak a típus, a találatszám és néhány technikai adat kerül. A beírt szöveg ezután eldobásra kerül: nem írjuk ki, nem küldjük el, nem őrizzük meg.
Nincs süti, nincs látogatói azonosító, nincs harmadik fél követőkódja, és nem küldünk adatot hirdetési vagy analitikai szolgáltatóhoz.
Ennek a lapnak az a dolga, hogy ezt az állítást ellenőrizhetővé tegye: megmutassa a teljes naplósort, a besorolás minden szabályát és a kódot, ami a döntést hozza.
02
Ennyit látunk — és ennyit nem
Ez a teljes naplónk. Nem egy részlete: ennyi az összes, ami egy látogatásból megmarad.
Napló · 2026. nov. 5. 15:00–16:00minta · 20 sor
Napló-minta húsz sorral: idő, eseménytípus, részlet, eszköz
15:04
megnyitás
innen: index.hu
asztali
15:04
látogatás
—
asztali
15:04
betöltési idő
teljes 640 ms · DOM 340 ms · első bájt 90 ms
asztali
15:05
megnyitás
innen: index.hu
mobil
15:05
keresés
teljes név · 0 találat
mobil
15:05
látogatás
—
mobil
15:06
megnyitás
innen: index.hu
mobil
15:06
olvasás
publikáció · 1–5 perc
asztali
15:06
betöltési idő
teljes 1 180 ms · DOM 720 ms · első bájt 140 ms
mobil
15:07
keresés
nyilvántartási szám · 0 találat
mobil
15:07
távozás
10–60 mp
mobil
15:07
megnyitás
innen: index.hu
asztali
15:08
keresés
fedőnév · 3 találat
asztali
15:08
megnyitás
innen: facebook.com
mobil
15:08
látogatás
—
mobil
15:09
olvasás
publikáció · 5–15 perc
asztali
15:09
keresés
egyszavas név · 11 találat
mobil
15:10
megnyitás
innen: index.hu
asztali
15:10
keresés
teljes név · 0 találat
asztali
15:11
távozás
1–5 perc
asztali
Minta, nem valódi naplórészlet: a sorok a 2026. november 5-i 15 órai tényleges arányok szerint készültek — ebben az órában 3 630 esemény, 834 keresés és 261 olvasás történt, a megnyitások túlnyomó része az Index-cikkből. Valódi sorokat nem teszünk közzé.
A naplósor mezői
idő
perc pontossággal, dátummal
típus
megnyitás, látogatás, keresés, olvasás, távozás, betöltési idő
keresés típusa
teljes név · egyszavas név · fedőnév · nyilvántartási szám · cím vagy tárgykör · egyéb
találat
hány találatot adott a keresés
olvasási idő
sávban: 0–10 mp, 10–60 mp, 1–5 perc, 5–15 perc, 15 perc fölött
honnan
a hivatkozó oldal domainje, teljes cím nélkül
eszköz
mobil vagy asztali
03
Mi kerül a naplóba
Mezőre lebontva, pontosan. Ami nincs itt a táblákban, az nem kerül a naplóba.
Keresésnél
mező
mit jelent
példa
ido
időpont perc pontossággal
2026-11-09 14:03
tipus
a keresés típusa — a hat kategória egyike
teljes_nev
talalat
hány találatot adott
0
talalt
volt-e egyáltalán találat
nem
javaslatbol
a legördülő javaslatból indult-e
nem
eszkoz
mobil vagy asztali
mobil
Olvasásnál
mező
mit jelent
példa
ido
időpont perc pontossággal
2026-11-09 14:06
publikacio
a saját gyűjteményünk tételazonosítója — a tételről szól, nem a látogatóról
pub-0421
idosav
mennyi ideig volt nyitva — sávban, nem másodpercre
1-5perc
eszkoz
mobil vagy asztali
mobil
Az olvasási idő sávjai: 0-10mp, 10-60mp, 1-5perc, 5-15perc, 15perc+. Sávban ugyanazt tudjuk meg — olvasták-e, vagy csak ránéztek —, de a pontos másodperc nem válik egyedi mintázattá, amiből két naplósort össze lehetne kötni.
04
Mi nem kerül a naplóba
A keresőbe beírt szöveg — sem nyersen, sem kódolva, sem rövidítve, sem elsősorban.
IP-cím — sem teljesen, sem csonkolva.
Süti vagy bármilyen tartós azonosító — se saját, se harmadik féltől.
Böngésző-ujjlenyomat — képernyőméret, nyelv, operációs rendszer, betűkészlet-lista.
Bármi, amiből két külön kérésről el lehetne dönteni, hogy ugyanattól a látogatótól jött.
Ennek az ára, hogy mi magunk sem tudjuk összerakni egy látogató útját, és visszatérő látogatót sem tudunk számolni. Ezt vállaljuk: az első 56 óra elemzésében is ez volt a legnagyobb korlát, és inkább maradunk a korláttal.
05
A hat kategória
A besorolás kizárólag a keresés alakjából dolgozik: hány szóból áll, betű-e vagy szám, szerepel-e benne témaszó, és egyezik-e a saját gyűjteményünk valamelyik fedőnevével. Élő személyekről nem vezetünk listát, és nem is készítünk ilyet.
A hat kategória
kategória
mit jelent
példa
teljes_nev
két-három, csupa betűből álló szó, kérdőszó és témaszó nélkül
„Kovács János”
egyszavas_nev
egyetlen név-szerű szó
„Kleopatra”
fedonev_talalat
a kifejezés egyezik a saját gyűjteményünk egyik fedőnevével — ez nyilvános adat, nem személyi nyilvántartás
„Nanu-Nanu”
nyilvantartasi_szam
H-, M- vagy B-szám alak, illetve puszta szám
„h-21399”
cim_vagy_targykor
cím, szerző, téma, kérdés — vagy bármi, amiben témaszó, kérdőszó vagy évszám van
„egyházüldözés”
egyeb
töredék, írásjel, besorolhatatlan
„M-”
A két segédlista, ami a döntéshez kell — a témaszavak (ügynök, akta, egyház, 1956, tanulmány…) és a kérdőszavak (hogyan, ki, miért…) — a forráskódban teljes egészében olvasható, lejjebb. Egyik sem tartalmaz személyneveket.
Amit a besorolás nem tud
Őszintén a korlátokról, mert ezek nélkül a szám félrevezető volna:
Egy magányos köznév (például „tanár”) ugyanúgy egyszavas_nev lesz, mint egy valódi vezetéknév — szótár nélkül ez nem különböztethető meg, és szótár helyett inkább vállaljuk a pontatlanságot, mint egy névlistát.
A fedőnevek jó része valódi vezetéknévnek látszik (Szigeti, Kövesdi, Sárosi), így a fedonev_talalat és a névkeresés között nincs éles határ. Éppen ez volt az első 56 óra legfontosabb lelete.
Az elgépelt alakok külön kifejezésnek számítanak — ugyanaz a név két-három kategóriába is eshet.
A besorolás egy keresésről szól, nem a kereső szándékáról. Arról nem tudunk semmit, és nem is akarunk.
06
Mit ad ez a besorolás a valódi adaton
Lefuttattuk a besorolót az indulás utáni napló 80 leggyakoribb kifejezésén, ami 416 keresést fed le. A táblában csak a kategóriák darabszáma és a találati arány szerepel — konkrét keresési kifejezést nem közlünk, egyet sem.
A 80 leggyakoribb kifejezés besorolása · 416 keresés
kategória
kifejezés
keresés
megoszlás
0 találatos
egyszavas_nev
59
271
13%
fedonev_talalat
14
111
35%
egyeb
1
13
0%
teljes_nev
4
12
50%
cim_vagy_targykor
2
9
67%
nyilvantartasi_szam
0
0
—
összesen
80
416
A megoszlás-sáv a legnagyobb kategóriához mérve olvasandó. Két dolog látszik: a keresések túlnyomó része egyetlen szó, és a cim_vagy_targykor — vagyis amikor valaki témára keres — alig fordul elő. Ez a lap nem névtárként használható, de a közönség annak próbálja használni.
A szám óvatosan olvasandó. Az ellenőrzés nyolc elemű, demó fedőnév-listával futott; élesben a teljes gyűjtemény fedőnevei ellen megy, így az egyszavas_nev egy része átsorolódik a fedonev_talalat kategóriába. A kategóriák határai pedig ott is bizonytalanok, ahol a fenti „amit nem tud” pontok jelzik.
07
A forráskód
Ez a teljes besoroló, ahogy van — kivonat nélkül, 242 sor. Nincs külső függősége, és a végén önteszt is van: python -I kereses_besorolo.py. Ami itt érdekes: a classify() csak a szó alakját vizsgálja, és a search_record() visszatérési értékében nincs olyan mező, ami a beírt szöveget hordozná.
meres/kereses_besorolo.pyPython 3.8+ · függőség nélkül
# -*- coding: utf-8 -*-"""Keresés-besoroló — feltartaktak.hu mérési réteg================================================Ez a modul azt a célt szolgálja, hogy a naplóba NE a beírt szöveg kerüljön,hanem csak annak a TÍPUSA és a kimenetele. A besorolás kizárólag a keresésalakjából dolgozik (hány szó, nagybetűs-e, szám-e, szerepel-e a sajátgyűjteményünk fedőnevei között) — élő személyekről vezetett listát NEMhasznál, és nem is készít.Alapelv: csak olyat naplózunk, aminek a teljes szabálykönyvét ki merjük tennia cikk mellé. A szabálykönyv emberi nyelven: HOGYAN-MERUNK.mdA beírt szöveg a besorolás után eldobandó: sem a naplóba, sem máshova nem kerül.Függőség nincs, Python 3.8+. Önteszt: python -I kereses_besorolo.py"""import re
import unicodedata
# --- a hat kategória (ezek a nevek jelennek meg a naplóban és a szabálykönyvben) ---TELJES_NEV = "teljes_nev"# vezetéknév + keresztnév alakEGYSZAVAS_NEV = "egyszavas_nev"# egyetlen név-szerű szóFEDONEV_TALALAT = "fedonev_talalat"# a saját gyűjteményünk egyik fedőneveNYILVANTARTASI_SZAM = "nyilvantartasi_szam"# H-/M-/B-szám alakCIM_VAGY_TARGYKOR = "cim_vagy_targykor"# cím, szerző, téma, kérdésEGYEB = "egyeb"# töredék, jel, besorolhatatlanKATEGORIAK = [
TELJES_NEV, EGYSZAVAS_NEV, FEDONEV_TALALAT,
NYILVANTARTASI_SZAM, CIM_VAGY_TARGYKOR, EGYEB,
]
# Témaszavak: NEM személyek, hanem a gyűjtemény fogalmai. Ha egy keresésben# szerepel valamelyik, akkor az a keresés témára irányul, nem névre.# Ez a lista nyilvános és bárki átnézheti — pont ezért nem kerülhet bele# egyetlen élő ember neve sem.TOPIC_WORDS = {
"ugynok", "ugynokok", "ugynokakta", "ugynokaktak", "akta", "aktak",
"allambiztonsag", "allambiztonsagi", "titkosszolgalat", "tartotiszt",
"halozat", "halozati", "beszervezes", "beszervezett", "fedonev", "fedonevek",
"dosszie", "dossziek", "karton", "kartonok", "magnesszalag", "bnaplo",
"abtl", "bm", "levettar", "leveltar", "iratok", "irat",
"egyhaz", "egyhazi", "egyhazuldozes", "papok", "szerzetes",
"rendszervaltas", "forradalom", "sortuz", "sortuzek", "megtorlas",
"kadar", "rakosi", "kadarkorszak", "szocializmus",
"kereso", "kereses", "segitseg", "sugo", "quiz", "teszt", "jatek",
"tortenet", "tortenetek", "tanulmany", "konyv", "cikk", "szerzo",
}
# Kötőszavak és kérdőszavak: ha ilyen van a keresésben, az mondat vagy kérdés,# nem névkeresés. Ez is fogalmi lista, nem személyekről szól.FUNCTION_WORDS = {
"a", "az", "es", "vagy", "de", "is", "meg", "csak", "nem", "ne",
"hogy", "hogyan", "mi", "mit", "miert", "milyen", "melyik", "mikor", "hol",
"ki", "kit", "kik", "van", "volt", "lesz", "lehet", "kell", "lenne",
"ez", "ezt", "itt", "ott", "kerem", "koszonom",
}
# Nyilvántartási szám: H-21399, M/12345, B 4711, vagy puszta szám.RE_REG_PREFIXED = re.compile(r"^[hmboHMBO][\s\-/.]?\d{2,7}$")
RE_REG_PLAIN = re.compile(r"^\d{3,7}$")
RE_ALPHA = re.compile(r"^[^\W\d_]+$", re.UNICODE) # csak betű (ékezet is)def strip_accents(text):
"""Ékezet-mentesítés: a magyar szövegek összehasonlításához."""
decomposed = unicodedata.normalize("NFD", text)
return"".join(ch for ch in decomposed if unicodedata.category(ch) != "Mn")
def norm(text):
"""Összehasonlítási kulcs: ékezet nélkül, kisbetűsen, az írásjelek szóközzé alakítva. Így a „Nanu-Nanu” és a „Nanu nanu” ugyanaz a kulcs, és az „abtl--2.2.2” alakú levéltári jelzetben is megtalálható az „abtl” szó."""
plain = strip_accents(str(text or"")).lower()
return re.sub(r"\s+", " ", re.sub(r"[^0-9a-z]+", " ", plain)).strip()
def _is_year(token):
"""Évszám-e? (1956 nem nyilvántartási szám.)"""returnbool(re.fullmatch(r"\d{4}", token)) and1900 <= int(token) <= 2030def classify(query, cover_names=None):
"""A keresés típusa — a beírt szöveget NEM adja vissza és nem tárolja. query: a beírt szöveg (csak itt, a memóriában) cover_names: a saját gyűjtemény fedőneveinek halmaza, norm() szerinti kulccsal. Ha nincs megadva, a fedőnév-kategória kimarad. Visszatérés: a hat kategória egyike (sztring). """
raw = str(query or"").strip()
iflen(raw) < 2:
returnEGYEB
tokens = raw.split()
key = norm(raw)
# 1. Nyilvántartási szám (az évszám nem az)iflen(tokens) == 1:
token = tokens[0]
ifnot _is_year(token) and (RE_REG_PREFIXED.match(token) orRE_REG_PLAIN.match(token)):
returnNYILVANTARTASI_SZAM# 2. A saját gyűjteményünk fedőneve (nyilvános adat, nem személy-lista)if cover_names and key in cover_names:
returnFEDONEV_TALALAT# 3. Témaszó bárhol a keresésben -> téma, nem név# A normalizált kulcs szavaival dolgozunk, így a központozás nem rejti el# a témaszót (pl. „abtl--2.2.2” -> „abtl 2 2 2”).
norm_tokens = key.split()
ifany(t inTOPIC_WORDSfor t in norm_tokens):
returnCIM_VAGY_TARGYKORiflen(tokens) > 1andany(t inFUNCTION_WORDSfor t in norm_tokens):
returnCIM_VAGY_TARGYKORifany(_is_year(t) for t in tokens):
returnCIM_VAGY_TARGYKOR# 4. Négy szótól fölfelé: cím vagy kérdés, nem névkeresésiflen(tokens) >= 4:
returnCIM_VAGY_TARGYKOR# 5. Két-három szó, mind betűből, témaszó és kérdőszó nélkül -> teljes név.# A kisbetűs gépelés gyakori („kovács jános”), ezért a nagybetű nem feltétel.if2 <= len(tokens) <= 3:
ifall(RE_ALPHA.match(t) for t in tokens):
returnTELJES_NEVreturnCIM_VAGY_TARGYKOR# 6. Egy szó: név-szerű, ha csak betű és nem túl hosszú
token = tokens[0]
ifRE_ALPHA.match(token) and3 <= len(token) <= 25:
returnEGYSZAVAS_NEVreturnEGYEB# --- olvasási idő: sávokban, pontos másodperc nélkül -------------------------DWELL_BUCKETS = [
(10, "0-10mp"),
(60, "10-60mp"),
(300, "1-5perc"),
(900, "5-15perc"),
(float("inf"), "15perc+"),
]
def dwell_bucket(seconds):
"""Olvasási idő sávja. A pontos másodperc nem kerül a naplóba: sávban ugyanaz a kutatási érték, de nem lesz belőle ujjlenyomat."""if seconds isNoneor seconds < 0:
return"ismeretlen"for limit, label inDWELL_BUCKETS:
if seconds < limit:
return label
return"15perc+"# --- naplósorok: ezek a mezők kerülnek ki, és semmi más ---------------------def search_record(query, result_count, from_suggestion, is_mobile,
minute_stamp, cover_names=None):
"""Keresési naplósor. A beírt szöveg NEM szerepel benne."""return {
"esemeny": "kereses",
"ido": minute_stamp, # perc pontosság"tipus": classify(query, cover_names), # a hat kategória egyike"talalat": int(result_count or0),
"talalt": bool(result_count),
"javaslatbol": bool(from_suggestion),
"eszkoz": "mobil"if is_mobile else"asztali",
}
def read_record(publication_id, seconds, is_mobile, minute_stamp):
"""Olvasási naplósor: a gyűjtemény egy tételéről szól, nem a látogatóról."""return {
"esemeny": "olvasas",
"ido": minute_stamp,
"publikacio": publication_id, # a saját gyűjtemény azonosítója"idosav": dwell_bucket(seconds),
"eszkoz": "mobil"if is_mobile else"asztali",
}
# --- önteszt ----------------------------------------------------------------def _selftest():
cover = {norm(x) for x in ["Szigeti", "Kovesdi", "Sarosi", "Nanu-Nanu", "Raguza"]}
cases = [
("h-21399", NYILVANTARTASI_SZAM),
("M/12345", NYILVANTARTASI_SZAM),
("777", NYILVANTARTASI_SZAM),
("1956", CIM_VAGY_TARGYKOR), # évszám, nem nyilvántartási szám
("Szigeti", FEDONEV_TALALAT),
("sarosi", FEDONEV_TALALAT), # ékezet és kisbetű nem számít
("Kovács János", TELJES_NEV),
("dr Kovács János", TELJES_NEV),
("Kleopatra", EGYSZAVAS_NEV),
("quiz", CIM_VAGY_TARGYKOR),
("egyházüldözés", CIM_VAGY_TARGYKOR),
("ügynök tartótiszt", CIM_VAGY_TARGYKOR),
("hogyan lehet keresni az aktákban", CIM_VAGY_TARGYKOR),
("kovács jános", TELJES_NEV), # kisbetűs gépelés is név
("ki volt Kovács", CIM_VAGY_TARGYKOR), # kérdőszó -> nem névkeresés
("Nanu nanu", FEDONEV_TALALAT), # a kötőjel nem számít
("abtl--2.2.2", CIM_VAGY_TARGYKOR), # levéltári jelzet, nem névkeresés
("M-", EGYEB),
("?", EGYEB),
("", EGYEB),
]
bad = 0for text, expected in cases:
got = classify(text, cover)
flag = "ok "if got == expected else"HIBA"if got != expected:
bad += 1print(" %s %-34r -> %-20s (vart: %s)" % (flag, text, got, expected))
print("\n dwell: 4mp=%s 45mp=%s 200mp=%s 1200mp=%s" % (
dwell_bucket(4), dwell_bucket(45), dwell_bucket(200), dwell_bucket(1200)))
print("\n naplosor minta: %s" % search_record(
"Kovács János", 0, False, True, "2026-11-09 14:03", cover))
return bad
if __name__ == "__main__":
import sys
try:
sys.stdout.reconfigure(encoding="utf-8")
except Exception:
passprint("Keresés-besoroló — önteszt\n")
failures = _selftest()
print("\n%s" % ("MINDEN ESET RENDBEN"ifnot failures else"%d eset elhasalt" % failures))
sys.exit(1if failures else0)
A kódban a két nyilvános segédlista — TOPIC_WORDS és FUNCTION_WORDS — végig olvasható. Fogalmak vannak bennük, nem emberek.
08
Meddig őrizzük
A naplósorokat 12 hónapig tartjuk meg, utána automatikusan törlődnek. A nyers napló soha nem nyilvános; amit közzéteszünk, az mindig összesítés: kategóriánkénti darabszám, találati arány, napszaki eloszlás.
09
Mit változtattunk, és mikor
2026. november 4–6.
Az indulás első 56 órájában a napló még tartalmazta a beírt keresőszöveget. Ebből készült az az elemzés, amely kimutatta, hogy a keresések 60,4%-a nem adott találatot, és hogy a közönség valódi neveket keresett ott, ahol fedőnevek vannak.
A nyers keresési listát nem hoztuk és nem is hozzuk nyilvánosságra.
2026. november [dátum]-tól
A beírt szöveget már nem naplózzuk, csak a fenti hat kategória egyikét. A kérdést, amiért a mérést elindítottuk, egyszer megválaszoltuk; ahhoz, hogy a választ időről időre frissítsük, a szövegre nincs szükség.
10
Amit nem állítunk
A kód publikálása nem auditálható bizonyíték.
Innen senki nem tudja ellenőrizni, hogy a szerveren pontosan ez fut. Amit tehetünk, az annyi, hogy a szabályt leírjuk, a kódot megmutatjuk, a build-azonosítót kiírjuk a lap aljára, és vállaljuk, ha eltérés derül ki.
Ez nem bizonyíték, hanem ellenőrizhető állítás — és ennél többet egyetlen weboldal sem tud őszintén ígérni.
Ha kérdésed van a méréssel kapcsolatban, írj: [impresszum]