GH GambleHub

필터링 및 전체 텍스트 검색

1) 검색 레이어가 필요한 이유

필터링 및 전체 텍스트 검색 (FTS) 은 기본 키뿐만 아니라 "의미로" 데이터에 빠르게 액세스 할 수 있습니다. 올바르게 설계된 검색 계층은 다음을 결합합

엄격한 필터 (범주, 날짜, 가격, 액세스 권한)

전체 텍스트 (어휘 일치 및 순위)

Facets (탐색을위한 집계)

하이브리드 랭킹 (BM25/TF-IDF + 벡터 수정)

신뢰할 수있는 프로토콜 (커서 페이지 매김, 토큰 TTL, 크로스 샤딩)

2) 건축 사진

구성 요소:

1. Ingest/ETL → 지수의 정규화, 중복 제거, 농축, 건물 필드.

2. 인덱서 → 역 인덱스 (토큰 → 문서), 열 구조, 벡터 인덱스 (HNSW/IVF-PQ).

3. 쿼리 레이어 → 요청 파서, 필터/액세스 권한 적용, 샤드 스케줄러, k-way 병합.

4. 랭커 → BM25 + LTR/신경 재 순위.

5. → 캐시, 커서, 패셋, 하이라이트, 자동 완성 서빙.

6. 관찰 가능성 → 대기 시간, 품질 지표, A/B 실험.

3) 데이터 및 인덱스 모델

3. 1 필드 및 분석기

유형: 키워드 (짝수 일치), 텍스트 (분석), 숫자/날짜/지리, 벡터.
분석기: 토큰 화, 정규화 (소문자, 유니 코드 NFKC), 필터 (스톱 워드, 줄기/정규화).
다국어: 필드 당 분석기 (ru, uk, en); ICU 분석; 음역; 분음 부호의 고려.

3. 2 역 색인 (스파 스)

구조: 용어 → 게시 목록 (docID, 용어 freq, 위치).
순위: 필드 부스트가있는 BM25 (또는 클래식 TF-IDF).

3. 3 벡터 지수 (밀도)

텍스트 임베딩 (예: 384-1024 차원).
ANN 구조: HNSW, IVF-PQ, Flat (작은 세트 용).
코사인 근접/내부 제품; BM25 교정 (하이브리드).

3. 4 개의 페이스 및 골재

빠른 카운트에 대한 값의 예약/열 저장.
계층 적 측면 (범주/하위 범주).
범위 (가격 쓰레기통, 날짜).

4) 쿼리: 필터 + 전체 텍스트 + 정렬

4. 1 개의 API 계약 (REST)

요청:

GET /v1/search? q = classic slots & limit = 20 & cursor =... & sort = score: desc, created _ at: desc
&filters=brand:("NetEnt","EGT"); price:[10 TO 50];published_at:[2024-01-01 TO ]
&facets=brand,year,price:range(0,10,20,50,100)
응답 (조각):
json
{
"items": [ { "id":"...", "title":"...", "score": 12. 3, "highlight": { "content": ["..."] } } ],
"facets": { "brand": [{"value":"NetEnt","count":123},...] },
"page": { "limit":20, "has_more":true, "next_cursor":"opaque-token" }
}

4. 2 그래프 QL (단순화)

graphql type Query {
search(query: String!, filter: SearchFilter, first: Int, after: String, sort: [Sort!]): SearchConnection!
}

4. 3 gRPC

proto message SearchRequest {
string query = 1;
map<string,string> filters = 2;
int32 page_size = 3;
string page_token = 4; // курсор repeated string facets = 5;
}

5) 자연어 처리 (NLP)

토큰 화/정규화: 유니 코드 안전, 하이픈/아포스트로피 회계.
스톱 워드: 언어 별 사용자 정의 목록.
Stemming vs lemmatization: ru/uk lemmatization의 경우 더 좋습니다 (품질> 속도).
동의어: 양방향/방향 사전; TTL이있는 사전 버전.
티포 (퍼지): 거리 제한과 정확한 경기 부스트가있는 Damerau-Levenshtein.
N- 그램/에지 -ngram: 자동 완성 및 힌트.
음역: "shch" "u", "kyiv/kyiv" - 대응 규칙.

6) 관련성 및 순위

6. 1 기본 어휘 점수

컬렉션별로 'k1', 'b' 설정이있는 BM25.
필드 별 부스트 (제목 ² 3, 태그 ² 1) 5, 본문> 1).
신선도: '점수 + = 신선도 _ 부스트 (붕괴 (생성 된 _ at))'.

6. 행동 신호 2 개

클릭 스루 속도, 체류 시간, 즐겨 찾기 저장 (위치 방지 bayas 포함).
중복 제거-~ 동일한 컨텐츠 (MinHash/SimHash) 와 문서를 함께 스티치하십시오.

6. 3 LTR (Learning-to-Rank)

특징: 필드 BM25, 길이, 신선도, 인기, 문구 별 일치, 위치 속도.

모델: LambdaMART/XGBoost; 오프라인 메트릭 NDCG @ k, MAP, Precision @ k; 온라인 A/B

6. 4 신경 재 배열

2 단계: 리콜 (BM25/ANN) → 톱 N (예: 200) → 크로스 인코더 재실행.
비용 회계: 시간 예산, 신경 단계가없는 대체.

6. 5 하이브리드 검색 (스파 스 + 밀도)

융합 (속도 및 합계의 정규화) 또는 다단계 (재조정으로 밀도).
최소 최대/z- 스코어/정량적 매핑이 중요합니다.

7) 필터링, 패셋 및 액세스

7. 필터 1 개

운영자: '=', 'IN', 범위, 접두사, 지리 경계 상자/지리 거리.
조합: 필터에 의한 'AND', 일련의 값 내에서 'OR' (브랜드 IN...).
유형 보안: 숫자 필드는 텍스트로 구문 분석되지 않습니다.

7. 2 개의 페이스

사전 계산 된 구조는 저렴합니다.
"응용" 패싯은 나머지 필터 후 패싯을 보여줍니다.

7. 3 액세스/멀티 테넌시

보안 필터는 순위 (사전 필터) 전에 통합됩니다.
문서의 ABAC/RBAC 필드 ('테넌트 _ id', '가시성', 'acl').
요청 토큰이 서명되었습니다. 다중 테넌트-자동 '테넌트 _ id' 필터.

8) 페이지 작성, 커서 및 일관성

시간별로 정렬 할 때 '(점수, 타이 브레이커)' 또는 '(생성 된 _ at, id)' 로 찾기 커서에 의한 페이지 매김.
HMAC 및 TTL의 Opaque 'page _ token'.
일관성: 거의 실시간 (NRT) 지수: 지연 0. 기록과 가시성 사이의 5-2 초. SLA에 문서화하십시오.
크로스 샤드: 로컬 검색 → k-way는 글로벌 순서, 샤드 당 커서를 토큰으로 병합합니다.

9) 자동 완성 및 프롬프트

제안 자: 접두사-trie/edge-ngrams

인기있는 쿼리: 클릭 로그 → 인기 + 개인화 (세그먼트) 에 대한 팁.
맞춤법: 거리 제한 '<= 1' 을 사용한 빠른 퍼지 검색.

REST 예:

GET /v1/suggest? q=kaz&limit=8&locale=ru
→ ["casino," "casual games,..."]

10) 하이라이트 및 스 니펫

위치 인덱스 → 일치하는 문구를 검색합니다.

HTML은 인접한 조각들의 이스케이프, 길이 제한, 결합

관련 용어의 밀도에 의한 스 니펫 순위.

11) 성능, 캐시 및 SLO

색인: 메모리의 핫 세그먼트; 압축 게시물; 패싯에 대한 문서 값.

캐시: L1 (프로세스), L2 (Redis), 패셋/집계 캐시; 인덱스 버전으로 비활성화됩니다

SLO: 'k <= 20' 에서 P95 <150-200 ms, P99 <500 ms; 가용성 99. 9%.
역압: 'k' 를 줄이고 과부하시 신경 단계를 비활성화하십시오.
그림% 1개의 캡션을 편집했습니다.

12) 관찰 가능성 및 품질 지표

기술 지표:
  • '검색 _ latency _ ms' (P50/P95/P99), 'qps', '타임 아웃', '오류 _ 인종'
  • 'cash _ hit _ ratio', 'facet _ cash _ hit', 'rerank _ share'
  • 'shard _ fanout', 'merge _ time _ ms', 'ann _ recall @ k'
품질 (오프라인):
  • 표시된 샘플의 NDCG @ k, MAP, MRR, Recall @ k, Precision @ k.
온라인:
  • CTR @ k, sCTR (만족스러운 클릭), 체류 시간, о족 (pogostick rate).

A/B: "가드 레일" 메트릭 (대기 시간, 오류) + 대상 (NDCG 프록시) 을 수정합니다.

13) 테스트

관련 단위 테스트: 주요 요청에 대한 예상 일치 확인.
속성 기반: 오타/동의어/언어에 대한 저항.
Pagination: 페이지 경계에 중복이 없습니다 (계약을 찾으십시오).
보안: 액세스 필터는 항상 적용됩니다 (faset-count에서도).
사전 회귀: 동의어 및 퍼지 규칙 버전.

14) 보안 및 개인 정보 보호

PII가있는 필드는 텍스트로 색인되지 않습니다. 별도로 저장/암호화.
저장된 소스를 최소화합니다 (저장 = 거짓, 스 니펫 필드 만 해당).
프라이버시 쿼리: 원시 요청을 PII로 기록하지 마십시오. 익명화/해싱.
멀티 테넌트: 엄격한 인덱스 격리 또는 필수 '테넌트 _ id' 필터.

15) 이주 및 상호 운용성

이중 쓰기 및 점진적 스위치가있는 Versioning 인덱스 체계 (v1 → v2).
분석기 호환성: 이전 체인을 다시 색인화하지 마십시오.
동의어/스톱 워드 사전의 회전: '버전', '활성화 _ at', 롤백.

16) 실용적인 요리법

16. 1 클래식 어휘 검색 (BM25)

필드: '제목 ² 3', '태그 ² 2', '본문> 1'.
분석기: 언어 별 + 정리.
짧은 쿼리 ('<= 3' 토큰), 'fuzziness = 1' 의 퍼지.

16. 2 하이브리드 스파 스 + 조밀

1. 쿼리 포함에 의한 ANN 검색 (k = 200)

2. Top-200 BM25와 병합

3. 교정 순위 융합

4. 선택적으로 충분한 예산으로 최고 N (N = 20) 을 사용하십시오.

16. 3 페이스 카탈로그 탐색

권리/테넌트 별 하드 사전 필터

필터 후 패셋 (활성 필터를 포함한 수)

관련성 또는 비즈니스 분야별로 정렬 (가격/참신)

17) 샘플 요청 (pseudo-DSL)

필터 및 정렬:
json
{
"query": "live casino,"
"filters": {
"country": ["EE","LV","LT"],
"license": ["MGA","UKGC"],
"launched_at": {"gte": "2023-01-01"}
},
"sort": ["_score:desc","launched_at:desc"],
"facets": ["country","license"],
"page": {"limit": 20, "cursor": "opaque"}
}
Geopoisk:
json
{
"query": "casino",
"geo": {"lat": 59. 437, "lon": 24. 753, "radius_km": 50}
}
자동 완료:
json
{ "prefix": "evo", "field": "brand_suggest", "limit": 8 }

18) UX 패턴

액티브 필터 칩 + "모두 재설정".
빈 결과: "시도"... (동의어, 필터 제거).
제로 힌트: 인기있는 쿼리/카테고리.
커서 페이지 매김 (추가 버튼) 및 무한 스크롤; 적용된 필터의 고정 표시기.
별도의 스위치는 "오타를 고려합니다", "문구의 정확한 일치" 입니다.

19) 빈번한 오류 및 패턴 방지

→ 복식/점프를 정렬 할 때 타이 브레이커가 없습니다.

활성 필터를 고려하지 않은 페이스 북 → "거짓" 수

순위 액세스 필터를 적용하십시오.
하나의 분석기와 다른 언어를 혼합합니다.
커서를 찾는 대신 깊은 페이지 매김 OFFSET/LIMIT.
대기 시간에 의한 무제한 퍼지 → 폭발.

20) 구현 점검표

1. 필드와 유형을 정의하고 로케일 당 분석기를 할당하십시오.
2. 역 인덱스 + 를 설계하십시오 (선택 사항). 벡터 ANN.
3. 쿼리 파서를 구현하고 사전 필터를 보호하십시오.
4. BM25 및 필드 부스트 설정; 패싯을 부착하십시오.
5. 커서 (불투명, HMAC, TTL) 를 입력하고 k- 웨이를 파편으로 병합하십시오.
6. 자동 완성, 하이라이트, 안전한 차폐를 추가하십시오.
7. 측정 항목: 대기 시간, NDCG @ k, CTR; L1/L2 캐시.
8. 튜닝 관련성을위한 A/B 프레임 워크.
9. 문서 SLA: NRT 지연, '제한' 한계, 일관성 보장.
10. 마이그레이션 계획: 색인, 사전 및 분석기 버전.

잘 설계된 필터링 및 전체 텍스트 검색 계층은 빠른 인덱스 일뿐만 아니라 커서, 보안, 예측 가능한 UX 및 측정 가능한 관련성과의 명확한 프로토콜 계약입니다. 이 접근 방식은 수천에서 수십억 개의 문서로 확장되며 신경망 순위가있는 고전적인 어휘 검색 및 최신 하이브리드 시나리오를 모두 지원합니다.

Contact

문의하기

질문이나 지원이 필요하시면 언제든지 연락하십시오.우리는 항상 도울 준비가 되어 있습니다!

Telegram
@Gamble_GC
통합 시작

Email — 필수. Telegram 또는 WhatsApp — 선택 사항.

이름 선택 사항
Email 선택 사항
제목 선택 사항
메시지 선택 사항
Telegram 선택 사항
@
Telegram을 입력하시면 Email과 함께 Telegram에서도 답변드립니다.
WhatsApp 선택 사항
형식: +국가 코드 + 번호 (예: +82XXXXXXXXX).

버튼을 클릭하면 데이터 처리에 동의하는 것으로 간주됩니다.