2009-03-30 3 views
3

리눅스에서 색인 생성을 사용하여 파일 검색 프로그램을 구현하는 것이 좋다고 생각합니다. 비글로 표시된 다른 파일 검색 프로그램이 몇 가지 있다는 것을 알고 있습니다. 하지만 공부 목적으로하고 있는데 ... 색인 생성을하는 방법을 때렸다. 나는 maemo-mapper 응용 프로그램에서 가져온 다음과 같은 생각을 가지고있다. 예를 들어, "suresh"라는 이름의 파일이있는 경우 파일 시스템을 파일로 ...리눅스에서 색인 생성을 사용하는 파일 검색 알고리즘

/home/$USERNAME/.file_search_index/s/u/r/e/s/h/list.txt ..이 list.txt에는 이름이있는 모든 파일의 위치가 들어 있습니다 = "suresh"... Pls는 그것을 구현하는 더 좋은 아이디어/알고리즘을 제안합니다 ... 그리고 다양한 파일 검색 기술 pls에 어떤 자료가 있다면 ....

+0

이것이 왜 downvoted인지 확실하지 않은 것은 유효한 질문 인 것 같습니다. –

+0

누가이 문제를 종결하도록 한 이유에 대해 확실하지 않습니다. 제발, 펭귄을 두려워하지 마세요. 우리는 또한 질문이 있습니다 :) –

답변

4

locate 명령을 보지 않았습니다 그게 findutils와 함께 제공됩니까? 비글과 마찬가지로 무료 소프트웨어이기 때문에 코드를 연구 할 수 있습니다.

findutils 패키지는 항상 참여자를 찾고 있습니다. 데이터베이스 형식에 대한

정보 비글은 inotify를 가진 매우 흥미로운 접근 방식을 사용 http://www.gnu.org/software/findutils/manual/html_node/find_html/Database-Formats.html

+0

http://slocate.trakker.ca/ 및 http://carolina.mff.cuni.cz/~trmac/blog/mlocate/도 있습니다. (비록 GNU Findutils가 가장 널리 설치 될 수 있지만) – ephemient

+0

안녕하세요, intallals를 찾아 주거나 그것에 대한 doc/link가 있습니까? 왜 내가이 질문을 던지는 이유는 코드 검색을 피하고 시간을 절약 할 수 있기 때문입니다. – suresh

+0

예, 문서가 있습니다. 추가됨. – ashawley

1

이다. 시작되면 상위 디렉토리에서 감시를 설정하고 재귀 검사를 수행하는 다른 스레드를 시작합니다. 더 많은 디렉토리에 액세스하면 부모는 이미 알고있는 것을 보면서 시계를 추가합니다.

그래서 시작하자마자 전체 트리를 매우 저렴하게보고 (디렉토리 당 하나의 시계) 모든 것을 색인화했습니다. 또한 스캔하는 동안 파일이 '누락'되지 않도록하는 데 도움이됩니다.

그래서 대부분의 전투에서입니다. 일반적으로 FS 검색 프로그램은 'updatedb'와 같이 색인 생성시 부진한 지점에 부딪 힙니다.

색인을 저장하는 방법에 관해서는 디렉토리에서 분할하는 것을 선호하지 않습니다. 당신은 본질적으로 파일 이름 배열의 각 문자에 대해 stat()를 호출 할 것입니다. some-very-long-shared-object-name.so.0은 이름의 모든 문자에 대해 stat()를 한 번 호출하는 것입니다. 잘 설계된 SQLite3 데이터베이스를 사용해보십시오.

커널 감사 고리를 사용하지 않고 PCI 인증 (신용 카드 프로세서)에 대해 약간 더 저렴한 감사 수단을 제공하는 프로그램과 비슷한 매우 유사한 작업을하고 있습니다.

+0

왜 디렉토리의 분할을 사용하지 않습니까 ... 나는 하나의 파일을 검색하여 인덱스의 모든 파일을 찾을 수 있습니다 .... 그래서 검색은 o (n) ... OS 파일 시스템이 하나의 파일을 가져 오는 데 걸리는 시간 ... 나는 파일 시스템의 파일에 어떤 변화가 있는지보기 위해 inotify를해야한다. – suresh

+0

stat()에 대한 궁극적 인 (그리고 필연적 인) 호출은 그 접근을 피하고 싶다. 각 조회는 파일 이름이 길면 비용이 많이들 것입니다. –

+1

모든 폴더에서 stat를 수행하지 않겠습니다. "/home/$USERNAME/.file_search_index/s/u/r/e/s/h/list.txt"문자열을 구성하고이 경우에만 stat를 수행합니다. list.txt .... 검색 결과를 나열하기 위해 해당 파일을 엽니 다. – suresh

관련 문제