>  기사  >  백엔드 개발  >  키워드 매칭 프로젝트 심층 연구 - 필터 도입

키워드 매칭 프로젝트 심층 연구 - 필터 도입

WBOY
WBOY원래의
2016-08-08 09:32:03933검색

키워드 매칭 프로젝트 심층 연구(1) - 필터 소개

이 글을 읽기 시작하시면 먼저 키워드 매칭 프로젝트(검색엔진) 수행 방법에 대한 단계별 지침을 이해하시기 바랍니다. ---- 1일차 ~ 단계별 수행 방법 안내 키워드 매칭 프로젝트(검색엔진) ---- 1일차 22일

머리말

이전 장에 이어서 Xiao Shuai Shuai가 완성된 코드와 테스트 결과를 공개한 후 Yu 상사는 아무 말도 하지 않고 온라인에 접속하라는 요청을 받았습니다. 이유는 매우 간단합니다. 모두가 기여하고 혜택을 받기를 원하기 때문입니다. 샤오슈아이슈아이는 물론 샤오딩딩, 유보스, 왕감독도 동행했다.

문제 원인

프로젝트를 진행하면서 키워드 수집 응용이 점점 더 널리 퍼지고 있습니다. 어느 날 갑자기 Xiao Shuai Shuai를 찾아온 Xiao Shuai Shuai는 물론 매우 기뻤습니다. 이어진 대화에서 그는 크게 실망했습니다.

"Xiao Shuai Shuai, 보세요, 이 단어에는 왜 &,?,%가 있습니까? 지저분한 단어가 많이 있습니다. 이 단어는 사용하기에 적합하지 않습니다. Little Ding Ding의 눈을 제거하는 방법을 알려주세요." 충분히 강력했고 Xiao Shuai Shuai를 떨게 만들었습니다.

“언니, 알겠습니다. 제가 먼저 가서 살펴보고 이 문제는 제가 처리하고, 해결되면 알려드리겠습니다.”

Xiaoshuai는 다시 확인해 보니 데이터베이스에 그런 이상한 단어가 많이 있다는 것을 알게 되었고 당황하여 Yu Boss를 다시 찾아야 했습니다.

“이제 어휘 키워드에 &,?,% 같은 단어가 많은데, 매칭 알고리즘에 따르면 이 단어들을 모두 사용할 수 있게 된 거죠.”

Yu Boss는 Xiao Shuaishuai의 설명을 듣고 계획을 세웠습니다. 이러한 키워드는 어차피 비즈니스에서 사용되지 않기 때문에 데이터베이스에 포함되지 않기를 바랍니다. 키워드 수. 라이브러리의 양에 따라 키워드의 가용성이 높아질 수도 있습니다.

Xiao Shuai Shuai는 그 말을 들었을 때 상사와 달라서 따라잡을 수 없었습니다.

솔루션

데이터베이스에 어원 입력, 규칙을 준수하는 승인 및 규칙을 준수하지 않는 삭제를 제어하는 ​​기능인 필터 기능을 추가합니다.

디자인 계획

업그레이드 버전이 과감하고 다채롭습니다.

클래스 다이어그램:

코드 계획

1. InputSource, FileSource 및 TaobaoHotsSource의 코드는 변경되지 않습니다.

2. 다음과 같이 소스 코드에 필터링 코드를 추가합니다.

<span> 1</span> <span>class</span><span> Source {
</span><span> 2</span> 
<span> 3</span>     <span>public</span> <span>$keywords</span><span>;
</span><span> 4</span> 
<span> 5</span>     <span>public</span> <span>function</span><span> run() {
</span><span> 6</span> 
<span> 7</span>         <span>foreach</span> (<span>$this</span>->keywords <span>as</span> <span>$word</span><span>) {
</span><span> 8</span>             <span>#</span><span> code...</span>
<span> 9</span>             <span>if</span>(Filter::is(<span>$word</span>)) <span>continue</span><span>;
</span><span>10</span>             
<span>11</span>             <span>$keyword</span> = <span>new</span><span> Keyword();
</span><span>12</span>             <span>$keyword</span>->word = <span>$word</span><span>;
</span><span>13</span>             <span>$keyword</span>-><span>save();
</span><span>14</span> <span>        }
</span><span>15</span> <span>    }
</span><span>16</span> 
<span>17</span> }

3. 새 필터 코드 추가:

<span> 1</span> <?<span>php
</span><span> 2</span> 
<span> 3</span> <span>#</span><span>@Filename: filter/Filter.php</span>
<span> 4</span> <span>#</span><span>@Author: oShine</span>
<span> 5</span> 
<span> 6</span> <span>class</span><span> Filter {
</span><span> 7</span> 
<span> 8</span>     <span>private</span> <span>static</span> <span>$filterWords</span> = <span>array</span>("*","?","%",".","&"<span>);
</span><span> 9</span> 
<span>10</span>     <span>public</span> <span>static</span> <span>function</span> is(<span>$word</span><span>){
</span><span>11</span>         <span>$pattern</span> = "/(".<span>implode</span>("|", self::<span>$filterWords</span>).")/"<span>;
</span><span>12</span>         <span>return</span> <span>preg_match</span>(pattern, <span>$word</span><span>);
</span><span>13</span> <span>    }
</span><span>14</span> 
<span>15</span> }

 

요약

좋은 코드 구조, 기능 추가 및 제거가 매우 간단하고 작업 효율성이 향상됩니다. Xiao Shuai Shuai는 이 일에 깊은 사랑에 빠졌습니다.

위 내용은 키워드 매칭 프로젝트에 대한 심층적인 연구 - 필터 소개와 그 측면을 소개하고 있으며, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.