검색 엔진의 효율적인 낮은 카디널리티 AND

Wispi

Lucene 등과 같은 검색 엔진은 데이터 세트의 여러 문서에 공통된 용어가있는 AND 쿼리를 어떻게 수행합니까? 예를 들어 다음과 같은 반전 된 인덱스에서

term    | document_id
---------------------
program | 1, 2, 3, 5...
python  | 1, 4
code    | 4
c++     | 4, 5

이 용어 program는 여러 문서에 존재하므로 쿼리가 program AND code매우 큰 문서 세트에 대해 교차를 수행해야 함을 의미합니다 .

수십억 개의 문서에 포함 된 용어의 교차를 사용하지 않고 AND 쿼리를 수행하는 방법이 있습니까?

Amirouche

프로그램이라는 용어는 프로그램과 코드의 쿼리가 매우 큰 문서 세트에 대해 교차를 수행해야 함을 의미하는 여러 문서에 존재합니다.

예. 다음 쿼리가 있다고 가정합니다.

term1 ANDterm2 ANDterm3

먼저 양의 용어문서 빈도 를 계산해야합니다 . 가장 적은 수의 단어를 선택합니다.

쿼리에서 가장 덜 일반적인 용어가 포함 된 문서를 검색합니다. 후보자들입니다. 그런 다음 유한 상태 머신을 사용하는 쿼리로 해당 후보를 필터링하고 점수를 매 깁니다.

따라서 데이터베이스에는 여러 부분 공간이 있습니다.

  1. 기본형 또는 어간 또는 용어에서 문서 빈도로의 매핑 (예 : tfidf)
  2. 주어진 기본형을 포함하는 문서를 검색 할 수있는 실제 역 색인
  3. 문서 ID와 문서의 전체 텍스트 표현 또는 쿼리 논리의 고급 정도에 따라 단어 모음 간의 매핑입니다.

그런 다음 필터 + 점수 단계가 병렬로 발생할 수 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관