Lucene 등과 같은 검색 엔진은 데이터 세트의 여러 문서에 공통된 용어가있는 AND 쿼리를 어떻게 수행합니까? 예를 들어 다음과 같은 반전 된 인덱스에서
term | document_id
---------------------
program | 1, 2, 3, 5...
python | 1, 4
code | 4
c++ | 4, 5
이 용어 program
는 여러 문서에 존재하므로 쿼리가 program AND code
매우 큰 문서 세트에 대해 교차를 수행해야 함을 의미합니다 .
수십억 개의 문서에 포함 된 용어의 교차를 사용하지 않고 AND 쿼리를 수행하는 방법이 있습니까?
프로그램이라는 용어는 프로그램과 코드의 쿼리가 매우 큰 문서 세트에 대해 교차를 수행해야 함을 의미하는 여러 문서에 존재합니다.
예. 다음 쿼리가 있다고 가정합니다.
term1
AND
term2AND
term3
먼저 각 양의 용어 의 문서 빈도 를 계산해야합니다 . 가장 적은 수의 단어를 선택합니다.
쿼리에서 가장 덜 일반적인 용어가 포함 된 문서를 검색합니다. 후보자들입니다. 그런 다음 유한 상태 머신을 사용하는 쿼리로 해당 후보를 필터링하고 점수를 매 깁니다.
따라서 데이터베이스에는 여러 부분 공간이 있습니다.
그런 다음 필터 + 점수 단계가 병렬로 발생할 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다