2008-09-25 3 views

답변

1

직접 작성 하시겠습니까? 아니면 단순히 기능이 필요합니까?

기능이 필요한 경우 전체 텍스트 검색을 지원하는 내장형/메모리 내장 데이터베이스가 트릭을 수행 할 수 있습니다. 이후 닷넷, 나는 오픈 소스 경쟁자로 SQLite ADO.Net Provider 권하고 싶습니다. 정말 좋습니다 (LINQ를 다른 공급자보다 먼저 지원하고 디자인 타임 지원 등). FTS 지원은 매우 적극적으로 개발되고 있습니다. 나는 Google이 그것에 대해 노력하고 있다고 생각합니다. VistaDB Database도 있습니다. 나는 이것을 주로 사용하고 있습니다. FTS를 지원해야합니다. 완전히 .Net, 어떤 통합 이점을 제공합니다.

직접 체크 아웃해야 할 경우 Information Retrieval에 관한 책을 읽어보십시오. 나는 몇 가지를 읽었지만, 군중들로부터 눈에 띄는 것은 아무것도 없다. Amazon이 도움을 줄 것입니다.

+0

나는 학습 환경을 갖기 위해 스스로 쓰고 싶습니다. –

1

나는 몇 줄의 코드 을 사용하여 F #에서 검색 엔진을 작성했습니다. 당신은 내 포스터 에 그것에 대해 읽고

Stefan Savev's home page

기본적인 아이디어는 아래 코드에 표시됩니다의 완전한 이행을 이용하여보다 설명은 실제로 코드 자체보다 필요하다 할 수 있습니다. 그것들은 내 웹 사이트에서도 구할 수 있습니다.

이 코드는 디스크 모음에 문서의 색인을 생성합니다. 인덱싱은 외부 메모리에서 수행됩니다.

 
1. let create_postings in_name tmp_dir out_name = 
2.  let process_doc (doc_id, doc_text) = 
3.   doc_text |> tokenize |> stopword |> stem 
4a.  |> List.count 
4b.  |> ListExt.map(fun (word, tf) -> (word, (doc_id, tf)) 
5.  in_name 
6.  |> as_lines 
7.  |> Seq.map_concat extract_docs 
8.  |> Seq.map_concat process_doc 
9a. |> External.group_by (fun (w, _) -> w) 
9b.  (fun (_, docid_and_tf) -> docid_and_tf) 
9c.  (fun lst -> (List.length lst, lst)) 
9d.  tmp_dir 
9e.  (External.ElemDesc()) 
10. |> output out_name