Gnus development mailing list
 help / color / mirror / Atom feed
From: Sascha Wilde <wilde@sha-bang.de>
Subject: Re: Including nnir.el
Date: Sun, 11 Jun 2006 12:59:55 +0200	[thread overview]
Message-ID: <m23bec2c0k.fsf@kenny.sha-bang.de> (raw)
In-Reply-To: <m2fyip80bh.fsf@kenny.sha-bang.de> (Sascha Wilde's message of "Thu, 01 Jun 2006 15:36:34 +0200")

[-- Attachment #1: Type: text/plain, Size: 645 bytes --]

Sascha Wilde <wilde@sha-bang.de> wrote:
> Reiner Steib <reinersteib+gmane@imap.cc> wrote:
>> Would you like to work on the integration?
>
> Yes, I'll do so. (thanks for the use full pointers).

Ok, here is the first patch.  I verified that there are no
undocumented contributions, removed non free backends and updates
copyright information.  (Documentation will follow later...)

IMPORTAINT: please double check that my changes to the copyright are
right, I'm not sure if it is ok to change the copyright retroactively
to the fsf.

@Reiner: I guess we have papers from Simon Josefsson on file, so the
imap backend should be no problem?

sascha

[-- Attachment #2: Patch for official integration of nnir --]
[-- Type: text/x-patch, Size: 16639 bytes --]

Index: contrib/ChangeLog
===================================================================
RCS file: /usr/local/cvsroot/gnus/contrib/ChangeLog,v
retrieving revision 7.33
diff -u -r7.33 ChangeLog
--- contrib/ChangeLog	10 Jun 2006 03:36:21 -0000	7.33
+++ contrib/ChangeLog	11 Jun 2006 10:39:53 -0000
@@ -1,3 +1,9 @@
+2006-06-11  Sascha Wilde  <wilde@sha-bang.de>
+
+	* nnir.el: Removed support for non free backends glimpse and excite.
+	* nnir.el: Changed and updated copyright to Free Software Foundation.
+	Moved all authors to head.
+
 2006-06-10  Andreas Seltenreich  <uwi7@rz.uni-karlsruhe.de>
 
 	* nnir.el (nnir-read-server-parm): Do not unconditionally fall back to
Index: contrib/nnir.el
===================================================================
RCS file: /usr/local/cvsroot/gnus/contrib/nnir.el,v
retrieving revision 7.18
diff -u -r7.18 nnir.el
--- contrib/nnir.el	10 Jun 2006 03:36:21 -0000	7.18
+++ contrib/nnir.el	11 Jun 2006 10:39:54 -0000
@@ -1,10 +1,16 @@
 ;;; nnir.el --- search mail with various search engines -*- coding: iso-8859-1 -*-
-;; Copyright (C) 1998 Kai Großjohann
+
+;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+;;   2005, 2006 Free Software Foundation, Inc.
 
 ;; Author: Kai Großjohann <grossjohann@ls6.cs.uni-dortmund.de>
-;; Keywords: news, mail, searching, ir, glimpse, wais, hyrex
+;; Swish-e and Swish++ backends by: 
+;;   Christoph Conrad <christoph.conrad@gmx.de>.
+;; Imap backend by: Simon Josefsson <jas@pdc.kth.se>.
+
+;; Keywords: news mail searching ir
 
-;; This file is not part of GNU Emacs.
+;; This file is part of GNU Emacs.
 
 ;; This is free software; you can redistribute it and/or modify
 ;; it under the terms of the GNU General Public License as published by
@@ -31,7 +37,7 @@
 ;; with your ideas.
 
 ;; What does it do?  Well, it allows you to index your mail using some
-;; search engine (freeWAIS-sf, Glimpse and others -- see later),
+;; search engine (freeWAIS-sf, swish-e and others -- see later),
 ;; then type `G G' in the Group buffer and issue a query to the search
 ;; engine.  You will then get a buffer which shows all articles
 ;; matching the query, sorted by Retrieval Status Value (score).
@@ -55,7 +61,6 @@
 ;;   others doesn't support nnfolder.
 ;; * It can only search the mail backend's which are supported by one
 ;;   search engine, because of different query languages.
-;; * There are restrictions to the Glimpse setup.
 ;; * There are restrictions to the Wais setup.
 ;; * There are restrictions to the imap setup.
 ;; * gnus-summary-nnir-goto-thread: Fetches whole group first, before
@@ -156,18 +161,7 @@
 ;; this prefix.  It defaults to `$HOME/Mail/' (note the trailing
 ;; slash).
 
-;; 2. Glimpse
-;;
-;; The code expects you to have one Glimpse index which contains all
-;; your mail files.  The Lisp setup involves setting the
-;; `nnir-glimpse-*' variables.  The most difficult to understand
-;; variable is probably `nnir-glimpse-remove-prefix', it corresponds
-;; to `nnir-wais-remove-prefix', see above.  The `nnir-glimpse-home'
-;; variable should be set to the value of the `-H' option which allows
-;; one to search this Glimpse index.  I have indexed my whole home
-;; directory with Glimpse, so I assume a default of `$HOME'.
-
-;; 3. Namazu
+;; 2. Namazu
 ;;
 ;; The Namazu backend requires you to have one directory containing all
 ;; index files, this is controlled by the `nnir-namazu-index-directory'
@@ -211,7 +205,7 @@
 ;; For maximum searching efficiency I have a cron job set to run this
 ;; command every four hours.
 
-;; 4. HyREX
+;; 3. HyREX
 ;;
 ;; The HyREX backend requires you to have one directory from where all
 ;; your relative paths are to, if you use them. This directory must be
@@ -242,7 +236,7 @@
 ;; the second element should be the article number, and the third
 ;; element should be the Retrieval Status Value (RSV) as returned from
 ;; the search engine.  An RSV is the score assigned to the document by
-;; the search engine.  For Boolean search engines like Glimpse, the
+;; the search engine.  For Boolean search engines, the
 ;; RSV is always 1000 (or 1 or 100, or whatever you like).
 
 ;; The sorting order of the articles in the summary buffer created by
@@ -261,8 +255,6 @@
 
 ;; Todo, or future ideas:
 
-;; * Make it so that Glimpse can also be called without `-F'.
-;;
 ;; * It should be possible to restrict search to certain groups.
 ;;
 ;; * There is currently no error checking.
@@ -330,12 +322,8 @@
 ;;; Developer Extension Variable:
 
 (defvar nnir-engines
-  `((glimpse nnir-run-glimpse
-             ((group . "Group spec: ")))
-    (wais    nnir-run-waissearch
+  `((wais    nnir-run-waissearch
              ())
-    (excite  nnir-run-excite-search
-	     ())
     (imap    nnir-run-imap
              ((criteria 
 	       "Search in: "                      ; Prompt
@@ -376,7 +364,7 @@
 ;;; User Customizable Variables:
 
 (defgroup nnir nil
-  "Search nnmh and nnml groups in Gnus with Glimpse, freeWAIS-sf, or EWS."
+  "Search nnmh and nnml groups in Gnus with swish-e, freeWAIS-sf, or EWS."
   :group 'gnus)
 
 ;; Mail backend.
@@ -407,47 +395,6 @@
   :type '(sexp)
   :group 'nnir)
 
-;; Glimpse engine.
-
-(defcustom nnir-glimpse-program "glimpse"
-  "*Name of Glimpse executable."
-  :type '(string)
-  :group 'nnir)
-
-(defcustom nnir-glimpse-home (getenv "HOME")
-  "*Value of `-H' glimpse option.
-`~' and environment variables must be expanded, see the functions
-`expand-file-name' and `substitute-in-file-name'."
-  :type '(directory)
-  :group 'nnir)
-
-(defcustom nnir-glimpse-remove-prefix (concat (getenv "HOME") "/Mail/")
-  "*The prefix to remove from each file name returned by Glimpse
-in order to get a group name (albeit with / instead of .).  This is a
-regular expression.
-
-For example, suppose that Glimpse returns file names such as
-\"/home/john/Mail/mail/misc/42\".  For this example, use the following
-setting:  (setq nnir-glimpse-remove-prefix \"/home/john/Mail/\")
-Note the trailing slash.  Removing this prefix gives \"mail/misc/42\".
-`nnir' knows to remove the \"/42\" and to replace \"/\" with \".\" to
-arrive at the correct group name, \"mail.misc\"."
-  :type '(regexp)
-  :group 'nnir)
-
-(defcustom nnir-glimpse-additional-switches '("-i")
-  "*A list of strings, to be given as additional arguments to glimpse.
-The switches `-H', `-W', `-l' and `-y' are always used -- calling
-glimpse without them does not make sense in our situation.
-Suggested elements to put here are `-i' and `-w'.
-
-Note that this should be a list.  Ie, do NOT use the following:
-    (setq nnir-glimpse-additional-switches \"-i -w\") ; wrong!
-Instead, use this:
-    (setq nnir-glimpse-additional-switches '(\"-i\" \"-w\"))"
-  :type '(repeat (string))
-  :group 'nnir)
-
 ;; freeWAIS-sf.
 
 (defcustom nnir-wais-program "waissearch"
@@ -470,37 +417,15 @@
 in order to get a group name (albeit with / instead of .).  This is a
 regular expression.
 
-This variable is similar to `nnir-glimpse-remove-prefix', only for Wais,
-not Glimpse."
-  :type '(regexp)
-  :group 'nnir)
-
-;; EWS (Excite for Web Servers) engine.
-
-(defcustom nnir-excite-aquery-program "aquery.pl"
-  "*Name of the EWS query program.  Should be `aquery.pl' or a path to same."
-  :type '(string)
-  :group 'nnir)
-
-(defcustom nnir-excite-collection "Mail"
-  "*Name of the EWS collection to search."
-  :type '(string)
-  :group 'nnir)
-
-(defcustom nnir-excite-remove-prefix (concat (getenv "HOME") "/Mail/")
-  "*The prefix to remove from each file name returned by EWS
-in order to get a group name (albeit with / instead of .).  This is a
-regular expression.
-
-This variable is very similar to `nnir-glimpse-remove-prefix', except
-that it is for EWS, not Glimpse."
+For example, suppose that Wais returns file names such as
+\"/home/john/Mail/mail/misc/42\".  For this example, use the following
+setting:  (setq nnir-wais-remove-prefix \"/home/john/Mail/\")
+Note the trailing slash.  Removing this prefix gives \"mail/misc/42\".
+`nnir' knows to remove the \"/42\" and to replace \"/\" with \".\" to
+arrive at the correct group name, \"mail.misc\"."
   :type '(regexp)
   :group 'nnir)
 
-;; Swish++.  Next three variables Copyright (C) 2000, 2001 Christoph
-;; Conrad <christoph.conrad@gmx.de>.
-;; Swish++ home page: http://homepage.mac.com/pauljlucas/software/swish/
-
 (defcustom nnir-swish++-configuration-file
   (expand-file-name "~/Mail/swish++.conf")
   "*Configuration file for swish++."
@@ -527,8 +452,8 @@
 in order to get a group name (albeit with / instead of .).  This is a
 regular expression.
 
-This variable is very similar to `nnir-glimpse-remove-prefix', except
-that it is for swish++, not Glimpse."
+This variable is very similar to `nnir-wais-remove-prefix', except
+that it is for swish++, not Wais."
   :type '(regexp)
   :group 'nnir)
 
@@ -537,7 +462,6 @@
 ;; New version: http://www.boe.es/swish-e
 ;; Variables `nnir-swish-e-index-file', `nnir-swish-e-program' and
 ;; `nnir-swish-e-additional-switches'
-;; Copyright (C) 2000 Christoph Conrad <christoph.conrad@gmx.de>.
 
 (make-obsolete-variable 'nnir-swish-e-index-file
 			'nnir-swish-e-index-files)
@@ -580,8 +504,8 @@
 in order to get a group name (albeit with / instead of .).  This is a
 regular expression.
 
-This variable is very similar to `nnir-glimpse-remove-prefix', except
-that it is for swish-e, not Glimpse.
+This variable is very similar to `nnir-wais-remove-prefix', except
+that it is for swish-e, not Wais.
 
 This could be a server parameter."
   :type '(regexp)
@@ -649,8 +573,8 @@
   "*The prefix to remove from each file name returned by Namazu
 in order to get a group name (albeit with / instead of .).
 
-This variable is very similar to `nnir-glimpse-remove-prefix', except
-that it is for Namazu, not Glimpse."
+This variable is very similar to `nnir-wais-remove-prefix', except
+that it is for Namazu, not Wais."
   :type '(directory)
   :group 'nnir)
 
@@ -885,77 +809,6 @@
 
 ;;; Search Engine Interfaces:
 
-;; Glimpse interface.
-(defun nnir-run-glimpse (query server &optional group)
-  "Run given query against glimpse.  Returns a vector of (group name, file name)
-pairs (also vectors, actually)."
-  (save-excursion
-    (let ((artlist nil)
-          (groupspec (cdr (assq 'group query)))
-          (qstring (cdr (assq 'query query)))
-	  (prefix (nnir-read-server-parm 'nnir-glimpse-remove-prefix server))
-	  artno dirnam)
-      (when (and group groupspec)
-        (error (concat "It does not make sense to use a group spec"
-                       " with process-marked groups.")))
-      (when group
-        (setq groupspec (gnus-group-real-name group)))
-      (set-buffer (get-buffer-create nnir-tmp-buffer))
-      (erase-buffer)
-      (if groupspec
-          (message "Doing glimpse query %s on %s..." query groupspec)
-        (message "Doing glimpse query %s..." query))
-      (let* ((cp-list
-              `( ,nnir-glimpse-program
-                 nil                    ; input from /dev/null
-                 t                      ; output
-                 nil                    ; don't redisplay
-                 "-H" ,(nnir-read-server-parm 'nnir-glimpse-home server) ; search home dir
-                 "-W"                   ; match pattern in file
-                 "-l" "-y"              ; misc options
-                 ,@(nnir-read-server-parm 'nnir-glimpse-additional-switches server)
-                 "-F" ,prefix           ; restrict output to mail
-                 ,qstring               ; the query, in glimpse format
-		 ))
-             (exitstatus
-              (progn
-                (message "%s args: %s" nnir-glimpse-program
-                         (mapconcat 'identity (cddddr cp-list) " "))
-                (apply 'call-process cp-list))))
-        (unless (or (null exitstatus)
-                    (zerop exitstatus))
-          (nnheader-report 'nnir "Couldn't run glimpse: %s" exitstatus)
-          ;; Glimpse failure reason is in this buffer, show it if
-          ;; the user wants it.
-          (when (> gnus-verbose 6)
-            (display-buffer nnir-tmp-buffer))))
-      (when groupspec
-        (keep-lines groupspec))
-      (if groupspec
-          (message "Doing glimpse query %s on %s...done" query groupspec)
-        (message "Doing glimpse query %s...done" query))
-      (sit-for 0)
-      ;; remove superfluous stuff from glimpse output
-      (goto-char (point-min))
-      (delete-non-matching-lines "/[0-9]+$")
-      ;;(delete-matching-lines "\\.overview~?$")
-      (goto-char (point-min))
-      (while (re-search-forward (concat "^" prefix "\\(.+\\)" "/\\([0-9]\\)+$") nil t)
-	;; replace / with . in group names
-        (setq dirnam (substitute ?. ?/ (match-string 1))
-	      artno  (match-string 2))
-	(push (vector (nnir-group-full-name dirnam server)
-		      (string-to-int artno)) artlist))
-
-      (sort* artlist
-             (function (lambda (x y)
-                         (if (string-lessp (nnir-artitem-group x)
-                                           (nnir-artitem-group y))
-                             t
-                           (< (nnir-artitem-number x)
-                              (nnir-artitem-number y))))))
-      )))
-
 ;; freeWAIS-sf interface.
 (defun nnir-run-waissearch (query server &optional group)
   "Run given query agains waissearch.  Returns vector of (group name, file name)
@@ -1001,50 +854,7 @@
                                 (> (nnir-artitem-rsv x)
                                    (nnir-artitem-rsv y)))))))))
 
-;; EWS (Excite for Web Servers) interface
-(defun nnir-run-excite-search (query server &optional group)
-  "Run a given query against EWS.  Returns vector of (group name, file name)
-pairs (also vectors, actually)."
-  (when group
-    (error "Searching specific groups not implemented for EWS."))
-  (save-excursion
-    (let ((qstring (cdr (assq 'query query)))
-	  (prefix (nnir-read-server-parm 'nnir-excite-remove-prefix server))
-	  artlist group article-num article)
-      (setq nnir-current-query query)
-      (set-buffer (get-buffer-create nnir-tmp-buffer))
-      (erase-buffer)
-      (message "Doing EWS query %s..." qstring)
-      (call-process nnir-excite-aquery-program
-		    nil			; input from /dev/null
-		    t			; output to current buffer
-		    nil			; don't redisplay
-		    (nnir-read-server-parm 'nnir-excite-collection server)
-		    (if (string= (substring qstring 0 1) "(")
-			qstring
-		      (format "(concept %s)" qstring)))
-      (message "Gathering query output...")
-
-      (goto-char (point-min))
-      (while (re-search-forward
-	      "^[0-9]+\\s-[0-9]+\\s-[0-9]+\\s-\\(\\S-*\\)" nil t)
-	(setq article (match-string 1))
-	(unless (string-match
-		 (concat "^" (regexp-quote prefix)
-			 "\\(.*\\)/\\([0-9]+\\)") article)
-	  (nnheader-report 'nnir "Dir name %s doesn't contain prefix %s"
-			   article prefix))
-	(setq group (substitute ?. ?/ (match-string 1 article)))
-	(setq group (nnir-group-full-name group server))
-	(setq article-num (match-string 2 article))
-	(setq artlist (vconcat artlist (vector (vector group
-						       (string-to-int article-num)
-						       1000)))))
-      (message "Gathering query output...done")
-      artlist)))
-
-;; IMAP interface.  The following function is Copyright (C) 1998 Simon
-;; Josefsson <jas@pdc.kth.se>.
+;; IMAP interface.
 ;; todo:
 ;; nnir invokes this two (2) times???!
 ;; we should not use nnimap at all but open our own server connection
@@ -1081,8 +891,7 @@
         (quit nil))
       (reverse artlist))))
 
-;; Swish++ interface.  The following function is Copyright (C) 2000,
-;; 2001 Christoph Conrad <christoph.conrad@gmx.de>.
+;; Swish++ interface.
 ;; -cc- Todo
 ;; Search by
 ;; - group
@@ -1192,8 +1001,7 @@
                                 (> (nnir-artitem-rsv x)
                                    (nnir-artitem-rsv y)))))))))
 
-;; Swish-E interface.  The following function is Copyright (C) 2000,
-;; 2001 by Christoph Conrad <christoph.conrad@gmx.de>.
+;; Swish-E interface.
 (defun nnir-run-swish-e (query server &optional group)
   "Run given query against swish-e.
 Returns a vector of (group name, file name) pairs (also vectors,

[-- Attachment #3: Type: text/plain, Size: 158 bytes --]

-- 
Sascha Wilde
Wer HTML postet oder gepostetes HTML quotet oder sich gepostetes oder
gequotetes HTML beschafft, um es in Verkehr zu bringen, wird geplonkt.

  reply	other threads:[~2006-06-11 10:59 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-03-17 13:39 [Patch] allowing nnir.el + swish-e to search gziped mails Sascha Wilde
2006-04-11 16:21 ` Lars Magne Ingebrigtsen
2006-05-31 22:12   ` Reiner Steib
2006-06-01  7:42     ` Sascha Wilde
2006-06-01 12:27       ` Reiner Steib
2006-06-01 12:27       ` Including nnir.el (was: [Patch] allowing nnir.el + swish-e to search gziped mails) Reiner Steib
2006-06-01 13:36         ` Including nnir.el Sascha Wilde
2006-06-11 10:59           ` Sascha Wilde [this message]
2006-06-12 21:59             ` Andreas Seltenreich
2006-06-19 17:16               ` Reiner Steib
2006-07-03  7:06                 ` Sascha Wilde
2006-07-13 12:44                   ` Sascha Wilde
2006-07-17 13:03                   ` Reiner Steib
2006-06-04 18:01         ` Sascha Wilde
2006-06-05 22:49           ` Reiner Steib

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=m23bec2c0k.fsf@kenny.sha-bang.de \
    --to=wilde@sha-bang.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).