F#의 전문 검색 엔진 예?
-
02-07-2019 - |
문제
F#에서 전체 텍스트 검색 엔진을 구축하는 방법에 대한 좋은 예 (웹 사이트 또는 책)가 있습니까?
해결책
이것을 직접 쓰고 싶습니까? 아니면 단순히 기능이 필요합니까?
기능이 필요한 경우 전체 텍스트 검색 지원이 포함 된 임베디드/메모리 데이터베이스가 트릭을 수행 할 수 있습니다. .NET이므로 추천합니다 sqlite ado.net 공급자 오픈 소스 경쟁자로서. 정말 좋습니다 (다른 제공 업체, 설계 시간 지원 등의 LINQ 지원) FTS 지원은 매우 활발한 개발 중입니다. Google이 작업하고 있다고 생각합니다. 도 있습니다 Vistadb 데이터베이스. 나는 지금 그것을 주로 사용하고 있습니다. FTS 지원이 있어야합니다. 전적으로 .NET으로, 통합 이점을 제공합니다.
당신이 그것을 직접해야한다면, 책을 체크 아웃하는 책 정보 검색. 나는 몇 가지를 읽었지만 군중에서 눈에 띄는 것은 없습니다. 아마존이 도움이 될 수 있습니다.
다른 팁
몇 줄의 코드 만 사용하여 F#에 검색 엔진을 작성했습니다. 내 포스터에서 그것에 대해 읽고 전체 구현에 액세스 할 수 있습니다.
기본 아이디어는 아래 코드에 표시되지만 실제로 코드 자체보다 더 많은 설명이 필요합니다. 그것들은 내 웹 사이트에서도 구입할 수 있습니다.
이 코드는 문서 모음의 디스크에 인덱스를 만듭니다. 인덱싱은 외부 메모리에서 수행됩니다.
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
제휴하지 않습니다 StackOverflow