검색을 소개하기 전에 정보의 양과 정보의 두 가지 개념을 소개하십시오.
(모두 자신이 통속적이고 이해하기 쉽다고 생각하는 해석으로 되어 있다. 흥미가 있으면 관련 책을 볼 수 있다. ) 을 참조하십시오
1. 1 정보는 불확실성을 줄이는 것이고, 정보도 확실성을 높이는 것이다.
전반절은 향농 정보의 정의이고 후반절은 역향농 정보의 정의이다. 밤을 들어 이성과의 교제 과정을 회상해 보세요. TA 를 만나기 전에, 너는 이 사람이 이 세상에 존재한다는 것을 알지 못한다. 나중에, 당신은 TA 의 모습을 보았다. 나중에 너는 TA 의 성격, 입버릇, 지난 일을 알게 되었다. 그리고 단계별로, 당신은 TA 에 대해 아무것도 모르고, 천천히 익숙해집니다. 이 시기는 당신이 끊임없이 TA 정보를 얻는 과정이다. 바로 이 정보들이 당신이 TA 가 누구인지를 완전히 확신하지 못하게 하고, TA 가 당신에게 적합하다는 것을 완전히 확신하게 하는 것이다. (알버트 아인슈타인, 지식명언)
1.2 정보량은 정보가 불확실성을 줄일 수 있는 측정이며, 정보량도 정보가 확실성을 높일 수 있는 측정이다.
정보량에 대한 수학적 묘사는 많지만, 전반적으로 이렇게 쉽게 이해할 수 있다. 밤을 들고 목격자가 용의자를 묘사하다. 증인의 메시지는 "그는 한 사람이다" 입니다. 증인 B 의 메시지는' TA 는 고등학교 남자다', 증인 C 의 메시지는' TA 는 고등학생, 긴 머리는 약 170' 이다. D 증인의 댓글은 "나는 그를 안다, 그는 진호남, 학교의 어깨" 이다. 우리는 정보 사이의 관계를 직관적으로 느낍니다: a
현지 남성의 비율은 50%, 현지 고등학교 남학생의 비율은 8%, 현지 고등학교 남학생의 긴 머리는 약 170 의 비율은 4%, 현지 손수건은 진호남이라는 비율은 0.000 1% 이다. P(A)>P(B)>P(C)>P(D) 이기 때문에 정보의 관계는 a 입니다
2. 검색용 제품 로직
검색은 사용자가 관심 있는 콘텐츠를 빠르게 찾을 수 있는 요구를 충족합니다. 사용자 입력 쿼리, 검색 시스템은 사용자가 입력한 정보를 기준으로 시스템에서 사용자가 관심 있다고 생각하는 내용을 필터링하고 시스템 인식의 중요도에 따라 순차적으로 표시합니다. 이 표현에 주의하세요. 즉, 검색은 세 단계로 나눌 수 있습니다.
1: 사용자가 입력한 정보에 대한 설명입니다
2 단계: 사용자 입력 정보를 기준으로 콘텐츠 필터링
3 단계: 필터링된 결과를 정렬합니다.
이 세 단계가 검색 시스템에서 어떻게 수행되는지 이해하려면 먼저 검색 서버가 정보를 저장하는 방법을 알아야 합니다.
3. 검색 데이터 저장 원칙
위 그림에서, 우리가 뉴스 사이트를 만들었다고 가정하면, 그 구조는 아래와 같다. 내용이 간소화되어 하나의 뉴스에 제목, 가이드, 본문만 있다고 가정합니다. 데이터는 읽기 수, 댓글 수, 공유수일 뿐이다.
그림 1- 1
거의 위 그림의 오른쪽에 있는 구조입니다. 오른쪽에는 뉴스 내용의 저장이 있습니다. 도서관에 있는 책처럼 쉽게 찾을 수 있는 순서대로 배열되어 있습니다. (이 저장 구조의 이름은 인덱스입니다. 도서관에서 온 언어입니다.) 왼쪽은 시소러스입니다. 한 검색어가 시소러스와 일치하는 한 시소러스의 해당 내용을 빠르게 찾을 수 있습니다. (데이비드 아셀, Northern Exposure (미국 TV 드라마), 검색명언)
각 검색 시스템에는 자체 어휘가 있으며, 분사에 대응할 수 없는 검색 동작은 결과가 없을 것이다. (윌리엄 셰익스피어, 검색어, 검색어, 검색어, 검색어, 검색어, 검색어) 각 검색 시스템은 사전처럼 서로 다른 대상 사용자에 따라 해당 어휘를 가지고 있습니다. 야금사전과 생물사전의 어휘는 다르다. 타오바오의 어고와도 다르다는 것을 알고 있다. 검색의 많은 최적화는 시소러스의 최적화에 집중되어 있다.
간단히 요약하면, 검색의 저장 원칙은 시스템의 어휘, 가지런히 배열된 컨텐츠 인덱스 데이터베이스, 시스템 어휘 및 컨텐츠 인덱스 데이터베이스를 빠르게 연결할 수 있다는 것입니다.
이 검색 시스템의 스토리지 구조를 바탕으로 우리가 말하는 세 가지 검색 단계가 순차적으로 진행됩니다.
4. 단계 1: 사용자가 정보를 입력하는 설명
앞서 말씀드렸듯이 검색어는 제한되어 있지만, 사용자 입력은 무한합니다. 그럼 어떻게 무제한 검색을 유한어고로 바꿔서 그에 상응하는 결과를 일치시킬까요? 여기에 새로운 개념을 도입해야 한다: 분사, 간단하게 입력된 문자열을 분할하는 것이다.
또한 1- 1 의 뉴스 검색 시스템을 예로 들어 보겠습니다. 만약 사용자가 입력한 조회가' 중국 유전자 조작 식품' 이라면, 시스템에는 사실 이 단어가 없다. 분사 기능이 없으면 시스템에 해당 내용이 있어도 검색이 즉시 종료됩니다. 분사는 정확하게 일치하지 않을 경우 사용자의 입력을 더 세분화하는 방식으로 작동합니다. 그래서 우리는 다음과 같은 결과를 얻었습니다.
중국의 유전자 변형 식품-중국, 독일, 유전자 변형 식품.
모든 단어에 정보가 있는 것은 아니다. "얻은" 결과를 회상해 보면 거의 모든 뉴스 내용에 있을 것이다. 이렇게 많은 결과를 회상하는 것은 분명히 옳지 않다. 예를 들어, 이 쿼리의 "단어" 는 실제로 분사 시스템에서 직접 무시됩니다. 내용에 나타날 확률이 다르기 때문에, 한 단어에 나오는 뉴스가 많을수록 포함된 정보가 적어지고, 정보가 너무 적은 단어는 무시된다. 즉, 단어를 비활성화하는 것이다. 동시에, 글자 수가 많은 뉴스 내용이 더 중요해질 것이다. 그런 다음 비활성화 단어가 제거된 후 결과가 더욱 단순화됩니다.
"유전자 변형 식품은 중국에 있다"-"중국", "유전자 변형", "식품".
처리 후 사용자의 비표준 쿼리가 표준 어휘로 변환되어 해당 컨텐츠를 신속하게 찾을 수 있습니다. 그림 1- 1 에 나와 있습니다.
5 단계 2: 사용자 입력 정보를 기준으로 콘텐츠 필터링.
사용자의 질의 해석을 통해, 우리는 실제로 몇 가지 검색 대상 내용에 해당하는 표준화된 단어들을 얻어낸 다음, 그 단어들을 선별하였다. (윌리엄 셰익스피어, 템플릿, 검색어, 검색어, 검색어, 검색어, 검색어, 검색어)
사용자가 검색을 해서 일부 결과를 검색했다. 그런 다음 모든 내용을 "내용이 관련이 있는지 여부" 와 "내용이 추억인지 여부" 라는 두 차원에 따라 네 부분으로 나눕니다.
리콜 관련 컨텐츠: 검색 대상 컨텐츠의 사용자 검색과 관련된 부분입니다.
리콜된 관련 없는 컨텐츠: 검색된 컨텐츠의 사용자 검색과 관련이 없는 부분입니다.
리콜되지 않은 관련 컨텐츠: 검색되지 않은 사용자 검색과 관련된 부분.
리콜되지 않은 관련 컨텐츠: 검색되지 않고 사용자 검색과 관련이 없는 부분입니다.
일반적으로 필터링 여부는 정확도와 리콜률 두 가지 관점에서 측정됩니다.
정확도는 검색된 모든 컨텐츠 중 관련 컨텐츠가 차지하는 비율입니다. 정확도:
조사율은 검색해야 할 모든 내용의 비율이다. 리콜 비율:
정확도와 회수율은 서로 모순되는 지표이다. 무게를 달아야 한다. 최종 측정은 2 의 고조파 평균을 대상 함수로 사용합니다. F 값:
이 세 가지 개념은 검색 최적화의 핵심 지표로 수동 점수와 고급 최적화를 포함합니다. 여기 없어요. 한 가지만 기억하면 됩니다. 사용자 조회 키워드가 포함된 모든 결과를 리콜해야 하는 것은 아닙니다.
3 단계: 필터링 된 결과를 정렬하십시오.
정렬은 검색 결과의 품질에 영향을 주며, 상위 결과가 높을수록 사용자의 클릭을 쉽게 얻을 수 있습니다. 좋은 검색은 가능한 한 검색해야 할 내용뿐 아니라 사용자를 끌어들일 가능성이 가장 높은 내용도 먼저 제시해야 한다는 점을 고려한다. (윌리엄 셰익스피어, 검색어, 검색어, 검색어, 검색어, 검색어, 검색어, 검색어)
검색 순위의 기본 논리는 다음과 같습니다.
사용자가 입력한 텍스트는 표준 시소러스의 단어로 변환되며, 검색 시스템은 각 특정 콘텐츠에 해당 단어가 포함되어 있는지 여부에 따라 표시 여부를 결정하고, 검색 시스템은 텍스트의 관련성에 따라 표시할 내용을 평가합니다. 최종 순위는 각 내용의 점수를 기준으로 한 것이다.
인터넷에서 Lucene 의 핵심 정렬 공식의 원리를 소개했다. 그러나 실제 상황은 사실 더 복잡하다. 앞서 말씀드린 뉴스 검색 시스템을 예로 들어보죠.
사용자가' 유전자 변형' 을 검색하면 제목, 소개, 본문에 유전자 변형 문자가 나타나든 점수에서 달라야 한다. 분명히 제목에는 더 높은 점수가 있어야 한다. 비즈니스 데이터도 고려해야 합니다. 예를 들어 읽기량이 65438+ 백만+인 게시물은 읽기량이 3 인 게시물보다 더 관련이 있지만, 읽기량이 65438+ 백만+인 게시물이 앞에 와야 합니다.
사실 모든 데이터는 텍스트와 데이터의 두 가지 범주로 나눌 수 있습니다. 텍스트는 내용의 관련성을 계산하는 데 사용되며, 이 부분은 Lucene 의 완성도 알고리즘에 점수를 매깁니다. 현재 시장에도 성형된 오픈 소스 솔루션이 있다. 텍스트와 데이터 간의 관계를 처리하는 방법은 검색 시스템 설계의 핵심 부분입니다.
Lucene 기반 Solr 시스템의 경우 텍스트 및 데이터 구성 코드는 실제로 간단합니다. At < str name="bf "> 및
& ltstr name="bf "> 비즈니스 데이터에 가중치가 부여됩니다.
& ltstr name="qf "> 텍스트 데이터에 가중치가 부여됩니다.
Solr 시스템의 메커니즘을 연구한 후 Solr 핵심 공식을 변형하여 공식을 얻었습니다.
우리가 텍스트에 준 텍스트 점수 가중치를 나타냅니다. 예를 들어, 이 시스템에는 제목, 서론, 본문이라는 세 가지 텍스트가 있습니다. 중요도에 따라 제목 가중치는 10, 가이드 가중치는 5, 본문 가중치는 1 입니다.
Lucene 알고리즘이 텍스트에 제공한 텍스트 관련성 점수를 나타냅니다. 이렇게 하면 텍스트의 글자 수, 이 검색어가 모든 텍스트에 나타날 확률과 같은 요인을 종합적으로 고려할 수 있다. (원리에 대해 더 알고 싶은 학생은 TF-IDF 와 코사인 유사성의 소개를 볼 수 있다.)
우리가 데이터에 부여한 데이터 가중치를 나타냅니다. 예를 들어 이 시스템에는 세 가지 데이터, 논평량, 공유량, 독서량이 있다. 중요도에 따라 제목 설명 가중치는 100, 공유 가중치는 200, 읽기 가중치는 1 입니다. (일반적으로 시간 감쇠가 도입됩니다. 여기서 잠시 논의하지 않겠습니다.)
데이터의 특정 값을 나타냅니다. 예를 들어 이 시스템에는 세 가지 데이터, 논평량, 공유량, 독서량이 있다.
정규화 계수를 나타냅니다. 즉, 큰 가중치를 줄 수 있으며, 최종 총점은 합리적인 범위 내에 있습니다.
이번에는 알고리즘 지표에 근거하여 판단한 것이다. 이 점수를 대표하여 사용자는 질의가 제공하는 정보의 양을 입력합니다. 입력 쿼리에서 제공하는 정보가 많을수록 s 가 커집니다.
증가, 불변, 이전 계수는 변하지 않고 이전 계수는 증가합니다. 전체 점수에 대한 텍스트 데이터의 기여도가 높을수록 비즈니스 데이터에 대한 텍스트 데이터의 가중치가 커집니다. 예를 들어, "베이징 국경절 교통 혼잡" 을 입력하면 "베이징 국경절 교통 혼잡" 보다 "베이징 국경절 교통 혼잡" 이 시스템에 더 많은 정보를 제공합니다. S 값이 클수록 전체 점수에서 텍스트의 점수가 커집니다.
따라서 최종 영향 순위는 텍스트 데이터 및 비즈니스 데이터, 즉 텍스트 가중치 및 데이터 가중치에 대한 가중치입니다.
이 두 데이터 세트는 검색 최종 순위에 영향을 주며, 이 데이터 세트의 할당은 검색 시스템이 비즈니스에 대해 이해하는 것입니다.