;;; guile-xapian --- Guile bindings for Xapian ;;; Copyright © 2020 Arun Isaac ;;; ;;; This file is part of guile-xapian. ;;; ;;; guile-xapian is free software: you can redistribute it and/or ;;; modify it under the terms of the GNU General Public License as ;;; published by the Free Software Foundation, either version 2 of the ;;; License, or (at your option) any later version. ;;; ;;; guile-xapian is distributed in the hope that it will be useful, ;;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;;; General Public License for more details. ;;; ;;; You should have received a copy of the GNU General Public License ;;; along with guile-xapian. If not, see ;;; . (use-modules (ice-9 match) (srfi srfi-26) (xapian xapian)) (define (index datapath dbpath) (call-with-writable-database dbpath (lambda (db) (for-each (lambda (record) (match record ((description title identifier) (let* ((idterm (string-append "Q" identifier)) (doc (make-document #:data (call-with-output-string (cut write record <>)) #:terms `((,idterm . 0)))) (term-generator (make-term-generator #:stem (make-stem "en") #:document doc))) (index-text! term-generator title #:prefix "S") (index-text! term-generator description #:prefix "XD") (index-text! term-generator title) (increase-termpos! term-generator) (index-text! term-generator description) (replace-document! db idterm doc))))) (call-with-input-file datapath read))))) (match (command-line) ((_ datapath dbpath) (index datapath dbpath)) ((program . _) (format (current-error-port) "Usage: ~a DATAPATH DBPATH~%" program)))