fixed docs + removed dead code
This commit is contained in:
parent
8a698c5c6b
commit
c641cb9b57
@ -1,52 +1,74 @@
|
||||
Recoll KIO slave
|
||||
================
|
||||
|
||||
This is a small experiment with a recoll KIO slave
|
||||
An experiment with a recoll KIO slave.
|
||||
|
||||
It does not appear terribly useful as such, especially because I
|
||||
couldn't think of a way to get access to email documents from
|
||||
Konqueror (especially those inside a multi-msg folder file, it's
|
||||
better with maildir). The Recoll preview feature is actually quite
|
||||
useful in this case. But anyway, here it is...
|
||||
Caveat: I am only currently testing this with a production, but very
|
||||
recent, version of KDE 4.1, and I don't intend to really support
|
||||
older versions. The most usable aspects work under KDE 4.0 though. As
|
||||
a reference, my test system is an up to date (2009-01) Kubuntu 8.10.
|
||||
|
||||
Usage
|
||||
=====
|
||||
|
||||
Depending on the protocol name used, the search results will be
|
||||
returned either as HTML pages (looking quite like a normal Recoll
|
||||
result list), or as directory entries.
|
||||
|
||||
The HTML mode only works with Konqueror, not Dolphin. The directory
|
||||
mode is available with both browsers, and also application open dialog
|
||||
(ie Kate).
|
||||
|
||||
The HTML mode is much more usable than the directory mode at this point
|
||||
|
||||
More detailed help/explanations can be found a document accessible
|
||||
from the slave:
|
||||
|
||||
To try things out, after building and installing, enter "recoll:/" in
|
||||
a Konqueror URL entry. Depending on the KDE version, this will bring
|
||||
you either to an HTML search form, or to a directory listing, where
|
||||
you should READ THE HELP FILE.
|
||||
|
||||
Building and installing:
|
||||
=======================
|
||||
|
||||
This began under KDE3 and might still be made to work, but I only
|
||||
built with KDE4 and cmake recently. Full functionality is only
|
||||
available with KDE 4.1 and later.
|
||||
The directory mode is only available with KDE 4.1 and later. This
|
||||
began under KDE3 and might still be made to work, but I only built
|
||||
with KDE4 and cmake recently.
|
||||
|
||||
The main Recoll installation shares its prefix with the KIO slave,
|
||||
which needs to use the KDE one. This means that, if KDE lives in /usr,
|
||||
Recoll must be configured with --prefix=/usr, not /usr/local. Else
|
||||
you'll have run-time problems, the slave will not be able to find the
|
||||
recoll configuration.
|
||||
Recoll configuration.
|
||||
|
||||
A kind of recipe:
|
||||
- You need the KDE4 core devel packages and cmake installed
|
||||
Recipe:
|
||||
- Make sure the KDE4 core devel packages and cmake are installed.
|
||||
|
||||
- Extract the recoll source, configure recoll with --prefix=/usr
|
||||
build and install recoll (or use another prefix if KDE lives elsewhere).
|
||||
- Extract the Recoll source, configure recoll with --prefix=/usr
|
||||
(or wherever KDE lives), build and install Recoll.
|
||||
|
||||
- In the recoll source, go to kde/kioslave/recoll, then execute:
|
||||
- In the Recoll source, go to kde/kioslave/recoll, then build and
|
||||
install the kio slave:
|
||||
|
||||
mkdir builddir
|
||||
cd builddir
|
||||
cmake .. -DCMAKE_INSTALL_PREFIX=/usr
|
||||
make
|
||||
sudo make install
|
||||
mkdir builddir
|
||||
cd builddir
|
||||
cmake .. -DCMAKE_INSTALL_PREFIX=/usr
|
||||
make
|
||||
sudo make install
|
||||
|
||||
- You should have a look at where "make install" copies things,
|
||||
because wrong targets are frequent. Especially, you should check
|
||||
that kio_recoll.so is copied to the right place, meaning among the
|
||||
output of "kde4-config --path module". As an additional check,
|
||||
there should be many other kio_[xxx].so in there. Same for the
|
||||
protocol file, check that it's not alone in its directory (really,
|
||||
this sounds strange, but, to this point, I've seen more systems
|
||||
with broken cmake/KDE configs than correct ones).
|
||||
because misconfigured distribution, generating wrong targets, are
|
||||
frequent. Especially, you should check that kio_recoll.so is copied
|
||||
to the right place, meaning among the output of "kde4-config --path
|
||||
module". As an additional check, there should be many other
|
||||
kio_[xxx].so in there. Same for the protocol file, check that it's
|
||||
not alone in its directory (really, this sounds strange, but, to
|
||||
this point, I've seen more systems with broken cmake/KDE configs
|
||||
than correct ones).
|
||||
|
||||
You need to build/update the index with recollindex, the KIO slave
|
||||
doesn't deal with it for now.
|
||||
doesn't deal with indexing for now.
|
||||
|
||||
|
||||
Misc build problems:
|
||||
@ -63,15 +85,3 @@ Found no way to fix this. You need to edit the line and replace the
|
||||
following error message:
|
||||
|
||||
make[2]: *** No rule to make target `/build/buildd/kde4libs-4.1.2/obj-i486-linux-gnu/lib/libkdecore.so', needed by `lib/kio_recoll.so'. Stop.
|
||||
|
||||
|
||||
|
||||
Usage
|
||||
=====
|
||||
You should then be able to enter "recoll:" in the konqueror URL
|
||||
entry. Depending on the KDE version, this will bring you either to an
|
||||
HTML search form, or to a directory listing, where you should read the
|
||||
help file, which explains how to switch between the HTML and
|
||||
directory-oriented interfaces.
|
||||
|
||||
|
||||
|
||||
@ -56,7 +56,6 @@ ${rcltop}/query/plaintorich.cpp
|
||||
${rcltop}/query/reslistpager.cpp
|
||||
${rcltop}/query/wasastringtoquery.cpp
|
||||
${rcltop}/query/wasatorcl.cpp
|
||||
${rcltop}/rcldb/pathhash.cpp
|
||||
${rcltop}/rcldb/rcldb.cpp
|
||||
${rcltop}/rcldb/rcldoc.cpp
|
||||
${rcltop}/rcldb/rclquery.cpp
|
||||
|
||||
@ -8,9 +8,7 @@
|
||||
<h2>Recoll kio slave</h2>
|
||||
|
||||
<p>Use this module to perform Recoll searches from any program with
|
||||
a KIO interface. <b>kio_recoll</b> is primarily
|
||||
designed and tested with <b>konqueror</b>, and you will
|
||||
undoubtedly get even more surprising effects with other tools.</p>
|
||||
a KIO interface.</p>
|
||||
|
||||
<p>The module can work in two modes:</p>
|
||||
<ul>
|
||||
@ -25,6 +23,12 @@
|
||||
ideas about improving kio_recoll, or observe an interesting and
|
||||
reproducible sequence, please <a href="mailto:jfd@recoll.org">
|
||||
report it</a>.</p>
|
||||
<p><b>kio_recoll</b> is primarily
|
||||
designed and tested with <b>konqueror</b>, and you will
|
||||
undoubtedly get <i>even</i> more surprising effects with other tools.</p>
|
||||
|
||||
<p>The Html interface is currently much more usable. The directory
|
||||
interface is extremely quirky.</p>
|
||||
|
||||
<p>The module is particularly unhelpful with search hits inside
|
||||
email folders, which Konqueror has no way to access.</p>
|
||||
@ -40,27 +44,22 @@
|
||||
|
||||
<p>You normally enter this interface by entering "recoll:" or
|
||||
"recoll:/" in the Konqueror URL entry, and following the "search"
|
||||
link.<br> In most circumstances, entering a link like
|
||||
link. You can also directly enter "recoll:/search.html".<br>
|
||||
|
||||
In most circumstances, entering a link like
|
||||
<a href="recoll:/john smith">recoll:/john smith</a> will also
|
||||
yield an HTML result list.</p>
|
||||
|
||||
<p>Compared to QT Recoll, the nice point is that you can click or
|
||||
drag/drop the icons to access the results in the standard desktop
|
||||
way.</p>
|
||||
|
||||
<h3>File manager interface</h3>
|
||||
|
||||
<p>Search results are returned as directory entries. No search
|
||||
result details (samples, relevance etc.) are available, but this
|
||||
interface allows multiple selections and copies, usage inside any
|
||||
KDE open dialog, etc.</p>
|
||||
|
||||
<p>The <i>path</i> part of the URI is taken as a Recoll query
|
||||
language string and executed. The results are displayed as
|
||||
directory entries.</p>
|
||||
|
||||
<p>To avoid swamping the interface with thousands of results, the
|
||||
result count is limited to 100 by default. You can change this value
|
||||
by setting the <code>kio_max_direntries</code> parameter in your recoll
|
||||
configuration file (typically ~/.recoll/recoll.conf)</p>
|
||||
|
||||
<p>There are several ways to enter this interface:</p>
|
||||
<ul>
|
||||
<li>Using "recollf" as protocol name instead of "recoll". This is
|
||||
@ -72,15 +71,6 @@
|
||||
recoll:/red apples ext:html/</a>
|
||||
</blockquote>
|
||||
</li>
|
||||
|
||||
<li>Switching from the HTML interface in konqueror by clicking the
|
||||
"Directory view" link at the top of the page. When doing
|
||||
this, the directory content will be synchronized with the
|
||||
current HTML result page. This offers a way to display results
|
||||
in the file manager beyond the <code>kio_max_direntries</code>
|
||||
limit. <em>In most cases, you will have to reload the file
|
||||
manager page to obtain this synchronization</em>.</li>
|
||||
|
||||
<li>Users who will want to use the file manager view most of the
|
||||
time can set the <code>RECOLL_KIO_ALWAYS_DIR</code> environment
|
||||
variable or the <code>kio_always_dir</code> recoll.conf variable
|
||||
@ -88,6 +78,22 @@
|
||||
through the search link in the top "recoll:" view.</li>
|
||||
</ul>
|
||||
|
||||
<p>No search result details (samples, relevance etc.) are available,
|
||||
but this interface allows multiple selections and copies, usage
|
||||
inside any KDE open dialog, etc.</p>
|
||||
|
||||
<p>To avoid swamping the interface with thousands of results, the
|
||||
result count is limited to 100 by default. You can change this value
|
||||
by setting the <code>kio_max_direntries</code> parameter in your recoll
|
||||
configuration file (typically ~/.recoll/recoll.conf)</p>
|
||||
|
||||
<p>Because of limitations in the current KIO slave usage, the actual
|
||||
entry names are not those displayed but synthetic ones like
|
||||
"recollResultxxx". This has unfortunate side-effects when
|
||||
dragging/dropping the entries to some other application, or when
|
||||
using an open dialog (the opened file doesn't have the correct path
|
||||
to the original file).</p>
|
||||
|
||||
<p><a href="recoll:///search.html">Recoll Search</a></p>
|
||||
|
||||
</body>
|
||||
|
||||
@ -285,14 +285,8 @@ void RecollProtocol::listDir(const KUrl& url)
|
||||
numentries = 100;
|
||||
}
|
||||
|
||||
// If the html pager is set, begin display at the current page. This
|
||||
// allows paging the dir display by switching between both modes
|
||||
int first = 0;
|
||||
if (m_pager.pageNumber() > 0) {
|
||||
first = m_pager.pageNumber() * m_pager.pageSize();
|
||||
}
|
||||
vector<ResListEntry> page;
|
||||
int pagelen = m_source->getSeqSlice(first, numentries, page);
|
||||
int pagelen = m_source->getSeqSlice(0, numentries, page);
|
||||
if (pagelen < 0) {
|
||||
error(ERR_SLAVE_DEFINED, "Internal error");
|
||||
return;
|
||||
|
||||
@ -98,7 +98,7 @@ const string& RecollKioPager::parFormat()
|
||||
"<a href=\"%U\"><img src=\"%I\" align=\"left\"></a>"
|
||||
"%R %S "
|
||||
"<a href=\"" << escurl << "&cmd=pv&dn=%N\">Preview</a> " <<
|
||||
"<a href=\"%U\">Open</a><br>" <<
|
||||
"<a href=\"%U\">Open</a> " <<
|
||||
"<b>%T</b><br>"
|
||||
"%M %D <i>%U</i> %i<br>"
|
||||
"%A %K";
|
||||
|
||||
@ -257,8 +257,15 @@ void RecollProtocol::get(const KUrl& url)
|
||||
goto out;
|
||||
}
|
||||
} else if (ingest.isResult(&qd, &resnum)) {
|
||||
// Matched an url generated by konqueror out of a directory listing:
|
||||
// ie: recoll:/some search string/recollResultxx
|
||||
// Url matched one generated by konqueror/Dolphin out of a
|
||||
// search directory listing: ie:
|
||||
// recoll:/some search string/recollResultxx
|
||||
//
|
||||
// This happens when the user drags/drop the result to another
|
||||
// app, or with the "open-with" right-click. Does not happen
|
||||
// if the entry itself is clicked (the UDS_URL is apparently
|
||||
// used in this case
|
||||
//
|
||||
// Redirect to the result document URL
|
||||
if (!syncSearch(qd)) {
|
||||
return;
|
||||
|
||||
@ -1,11 +1,20 @@
|
||||
Recoll KIO Slave notes/todoes/etc.
|
||||
|
||||
Goal: access Recoll search from other applications.
|
||||
|
||||
We want to allow URLs like recoll:/?? to be used inside
|
||||
Konqueror/Dolphin and open dialogs, to start a search with results
|
||||
displayed/used inside the application.
|
||||
|
||||
|
||||
Todoes
|
||||
=====
|
||||
======
|
||||
|
||||
|
||||
Implementation notes:
|
||||
====================
|
||||
|
||||
- There would be two main ways to do this:
|
||||
- There are two main ways to do this:
|
||||
- a-la kio_beagle, using listDir() to list entries pointing to the
|
||||
different operations or objects (help, status, search result
|
||||
entries, bookmarks, whatever...). The nice thing is that the
|
||||
@ -14,16 +23,12 @@ Implementation notes:
|
||||
KDE
|
||||
|
||||
- Or a la strigi: all interactions are through html pages and get()
|
||||
operations. Looks less like a normal konqueror file-system
|
||||
listing, and needs more html coding but all in all probably
|
||||
simpler.
|
||||
operations. Much simpler, but does not allow file management
|
||||
operations (except by drag/drop from the result list), and can't
|
||||
use it inside other application's Open dialogs.
|
||||
|
||||
Recoll is currently doing both things on KDE4.1 (only html for KDE4.0).
|
||||
|
||||
Recoll is currently doing both things on KDE4.1 (only html for
|
||||
KDE4.0). As far as I understand, the way to trigger a listdir is to
|
||||
have a inode/directory default mime type in the protocol file, and
|
||||
return inode/directory when appropriate in mimetype() (look at
|
||||
kio_beagle). Some kde daemon needs to be restarted when doing this
|
||||
(the protocol file is cached somewhere).
|
||||
|
||||
Virtual tree:
|
||||
=============
|
||||
@ -38,17 +43,28 @@ recoll:/search.html
|
||||
|
||||
recoll:/some search string
|
||||
recoll:/some search string/
|
||||
We have a 'mode' determined by the protocol name:
|
||||
recoll -> mixed
|
||||
recollf -> file manager
|
||||
- html mode: these redirect to recoll://search/query?q="some search string"
|
||||
- file manager mode: do the search and display results.
|
||||
- mixed mode: what mode is entered depends on ending /
|
||||
'mode' is determined by the protocol name:
|
||||
recoll -> html
|
||||
recollf -> file manager
|
||||
recollm -> mixed
|
||||
|
||||
recoll://search/query?q=...
|
||||
html mode search
|
||||
|
||||
recoll:/some search string/recollResultxyz
|
||||
xyz is the index in result list.
|
||||
|
||||
When generating a directory, with use bogus names for the result
|
||||
entries (the displayed ones are from UDS_DISPLAY_NAME and are the real
|
||||
names). When doing drag/drop or "open with" Konqueror/Dolphin builds
|
||||
an url by concatenating the current directory name and the UDS_NAME,
|
||||
instead of using UDS_TARGET_URL as when the entry is clicked. This
|
||||
forces us to use identifying names including the result number, which
|
||||
has many ennoying side effects (such as the target app not knowing the
|
||||
real file path...
|
||||
|
||||
|
||||
KIO notes:
|
||||
=========
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user