C\#열 을 뿌 려 키워드 필 터 를 실현 하 는 실례

2237 단어 키워드여과
검색,여과 에 대해 궁금 해 하 며 기술적 함량 이 높 아 매우 NB 인 사람 만 할 수 있다 고 생각 했다.그들의 원 리 를 알 고 싶 습 니 다.이런 기능 을 실현 하려 면 디자인 이 반드시 매우 NB 가 되 어야 하 는 지,코드 를 아주 잘 써 야 하 는 지,성능 이 매우 높 아야 합 니 다.어쨌든 이 모든 것 은 나 같은 등급 의 사람 이 할 수 있 는 일이 아니다.내 가 에서 이런 글 을 볼 때 까지:
"검색 을 실행 하기 전에 텍스트 내용 을 미리 처리 할 수 있다 고 가정 하면 문서 에 있 는 모든 단어 에 색인 을 만 들 고 단어 가 나 올 때마다 링크 를 저장 할 수 있 습 니 다.이러한 역방향 색인 은 프로그램 이 주어진 단 어 를 빨리 찾 을 수 있 습 니 다.단 어 를 찾기 위해 서 는..."우 리 는 그 안에 포 함 된 모든 단어의 링크 를 교차 시 킬 수 있 지만 실현 하기 가 비교적 복잡 하고 속도 가 느 릴 수 있다."하지만 일부 웹 검색엔진 은 이런 방법 을 사용한다)"
생각 이 이렇게 간단 하 니,내 가 믿 을 게!어떤 검색엔진 도 이런 생각 을 쓴다.이러한 해시 방식 으로 키 워드 를 처리 하 는 것 은 확실히 매우 빠 릅 니 다.10000 개의 글 자 를 하나의 해시 목록 으로 구성 하 는 것 도 몇 밀리초 입 니 다.미리 분 배 된 메모리 가 비교적 좋 으 면 기본적으로 아무런 조작 도 하지 않 고 메모리 에 데 이 터 를 채 우 는 것 입 니 다.뿌리 기 목록 에서 키 가 존재 하 는 지 여 부 를 판단 하 는 시간 복잡 도 는 O(1)이 며,사실 스스로 Dictionary를 다시 쓸 수 있 습 니 다.키 워드 를 걸 러 내 는 효율 이 더 좋 을 수 있 습 니 다.
실현 의 사고방식 은 비교적 간단 하 다.
1:키 워드 를 처리 하고 키워드 사전 표를 생 성 합 니 다.
2:필터 할 텍스트 를 처리 하고 사전 표를 생 성 합 니 다.
3:텍스트,두 사전 표 세 가 지 를 비교 합 니 다.
다음 글 을 테스트 해 보 겠 습 니 다.
"클 라 우 드 블 로 그 를 보면 12306 병발 문 제 를 해결 하 는 시사 점 을 볼 수 있 습 니 다.저 는 지금 준 카드 인 터 페 이 스 를 만 들 고 있 습 니 다.병발 문제 가 발생 할 수 있 습 니 다.바로 주문 이 우리 의 인터페이스 에 여러 가지 요 구 를 보 낼 수 있 습 니 다.제 가 지금 하 는 방법 은 데이터 베이스 에 대응 하 는 표 에 가서 주문 이 존재 하 는 지 확인 하 는 것 입 니 다.만약 에 존재 한다 면 제시 하 세 요.만약 에 절차 에 따라그러나 이 모든 주문 서 는 데이터 베 이 스 를 찾 아야 합 니 다.만약 에 제 가 메모리 에서 주문 집합 을 유지 하면 주문 에 존재 하 는 지 판단 하 는 문 제 를 빨리 해결 할 수 있 습 니 다.관성 사고 가 너무 심각 해서 모든 것 을 데이터 베 이 스 를 찾 아야 합 니 다.이런 성능 이 가장 나 쁜 것 입 니 다.사실은 많은 문 제 는 메모리 에서 해결 할 수 있 습 니 다.최근 에 특별한 느낌 이 있 습 니 다.우물 안 개구리 가 되 지 말고 소인 의 것 을 많이 보고 코드 를 쓰 는 것 보다 수확 이 정말 빨리 늘 었 습 니 다.사실 제 가 쓴 프로그램 이 성능 이 떨 어 지고 효율 이 낮은 경우 가 많 습 니 다.모두 방법 때 문 입 니 다.좋 은 방법 을 찾 지 못 했 고 반 짝 이 는 느낌 없 이 최 악의 방법 으로 문 제 를 해 결 했 습 니 다."
테스트 코드:
출력 결과 캡 처:

또한 간단 하고 실 용적 인 코드 운행 시간 테스트 류 를 보 내 드 립 니 다.특정한 코드 의 운행 시간 을 테스트 하 는 것 이 편리 합 니 다.
4.567913.사열 을 실현 하 는 부분 핵심 코드:
4.567913.저도 모든 코드 를 붙 이 고 싶 지만 BUG 도 있 습 니 다.기능 이 보완 되 어야 합 니 다.보완 되면 소스 코드 가 붙 을 것 입 니 다.한 장의 그림 을 캡 처 해서 보 여 드 리 겠 습 니 다.

좋은 웹페이지 즐겨찾기