저는 내가 돌아 왔던 블로그 .. 웹에 더 이상 없습니다. 여기 있습니다! :
Darren Rowse는 “How to”에 대한 Group Writing Project를 개최하고 있습니다. 이것은 제가 정기적으로 읽는 몇 안되는 블로그 중 하나이므로 변화를 위해 읽을만한 가치가있는 글을 쓰지 않는 이유를 생각합니다. 오히려 제가 휴고 차 브스를 목을 찌르겠다고 위협하는 제 표준 폭력적인 폭언을하게됩니다.
“How to write a search engine”을 작성하기로 결정했습니다. 두 가지 이유로이 주제를 선택했습니다.
- 웹에 이에 대한 좋은 정보가 많지 않습니다.
- 현재 제 고객 중 한 명을 위해 하나를 작성하고 있습니다.
제 고객은 상당한 규모의 온라인 소매 업체이므로 전체 웹을 검색하지 않고 해당 사이트 만 검색합니다. 사이트에서 판매되는 제품. 인터넷 검색에 사용되는 더 복잡한 기술을 작성하는 데에도 동일한 기술을 사용할 수 있습니다. 이 블로그가 기술 블로그가 아니라는 것을 알고 있으므로 기술에 너무 깊이 들어 가지 않을 것이며 하드웨어 \ 처리 능력 요구 사항이나 웹 크롤링에 대해서도 논의하지 않을 것입니다.
저는 상당히 간단한 기술을 사용하고 있습니다. , 세 개의 필드가있는 테이블 (tblKeywords)이 있습니다.
- Itemid (웹 검색을 수행하는 경우 URL이 됨)
- KeyWord (인덱싱 된 키워드)
- 무게 (1 ~ 100 사이의 숫자 값으로이 숫자가 클수록 키워드가 더 중요한 (가중치) 전달) * PK = ItemID + KeyWord
가장 먼저하는 일은 관련된 모든 곳에서 개별 단어를 수집하는 것입니다. 내 고객을 위해 제품 테이블을 가져옵니다. 특히 Itemid, ItemName, ItemShortDescription, ItemLongDescription, Manufacturer, ManufacturerSKU, Category1, Category2, Category3 등 필드에서. 웹 페이지를 색인화하는 경우 페이지 텍스트, 페이지 제목, URL 또는 색인이 생성되는 페이지로 다시 링크되는 다른 페이지의 링크에서 데이터를 가져올 수 있습니다.
가중치는 키워드의 출처에 따라 결정됩니다. . 예를 들어, 제 경우에는 Item “s Manufacture”의 SKU는 가중치가 100이고 항목 이름의 단어는 가중치가 25 일 수 있습니다. ItemLongDescription의 단어는 가중치가 5가 될 수 있습니다. 인덱싱하는 경우 웹 페이지 페이지 제목의 단어는 가중치가 75가되는 반면 페이지 텍스트에서 굵게 표시된 단어는 가중치가 10이 될 수 있습니다. 단어가 두 번 이상 또는 \ 그리고 여러 위치에서 반복되는 경우 발생할 때마다 무게. 예를 들어 “Shirt”라는 단어가 ItemId = 12345, ItemName (무게 25)에 대해 두 곳에서 나오고 ItemLongDescription (무게 5 x2 = 10)에 두 번 나타나는 경우 “셔츠”라는 단어는 ItemId에 대해 총 무게가 35입니다. = 12345.
어떤 사람이 “분홍색 셔츠”를 검색하면 내 테이블에서 “분홍색”또는 “셔츠”라는 단어의 모든 인스턴스를 검색하고 총 무게를 계산합니다. 총 중량이 가장 높은 항목을 맨 위에 표시합니다.
SQL :
Select Itemid, sum(weight) as totWeight from tblKeywords group by itemId having keyword in ("pink","shirt")
여기에 기본 (빠름) 검색 엔진. 물론 구두점, HTML 코드 및 “and”, “if”, “or”와 같은 쓸모없는 키워드를 제거하는 것과 같이 할 일이 더 많습니다. 이것은 핵심 구문 검색을 다루지는 않지만 구문이 시작되고 끝나는 위치를 파악할 수 있다면 구문에 유사한 시스템을 사용할 수 있습니다.
댓글