First, let me apologize for the lack of documentation. Hopefully, we
will be able to provide some documentation before the final release.
<p>
As you might already know, the following packages are now available
from CVS:
<ol>
<li> ACS Service Contract
<li> Search
<li> OpenFTS Driver
</ol>
(1) and (2) are core packages. To install the openfts-driver package
follow the instructions in the <code>doc/INSTALL</code> file. When you
are done visit the ACS Service Contract package link from the
top-level page. You will see something like this:
<code><pre>
873 FtsEngineDriver, 2376 openfts-driver [Install]
</pre></code>
Click on the Install link. <code>FtsEngineDriver</code> is a contract
(an abstract set of operations like index,search,etc).
<code>openfts-driver</code> is an implementation of that contract
(functions -- concrete implementations of the operations). So, if
somebody wants to use a different search engine (htdig, swish, etc)
all s/he has to do is write a new implementation of the
<code>FtsEngineDriver</code> contract. <small><b>[Note: If you plan to
do so,
please contact me so that I can provide some guidelines for
consistency among the implementations of a contract]</b></small>
<p>
Next, download the enhanced notes package from here:
<a
href=https://openacs.org/new-file-storage/one-file?file_id=185>https://openacs.org/new-file-storage/one-file?file_id=185</a>.
This package implements/supports the <code>FtsContentProvider</code>
contract which
includes two operations, namely datasource and url. The former returns
data for the given object_id and the latter returns a url for the
given object_id. Now, visit the ACS Service Contract link from the
top-level page and install the binding that looks like this:
<code><pre>
892 FtsContentProvider, 2408 note [Install]
</pre></code>
Again, if you want your package to support indexing/searching
capabilities, you will have to implement
<code>FtsContentProvider</code>. We are already working to provide
these implementations for the packages that are currently available
(i.e. CVS) and we will also post some guidelines about this very soon.
<p>
Finally, mount the <code>search</code> and <code>note</code> packages
and restart your server. Try adding some notes. We have configured the
search package to check a queue of content-objects that need indexing
every 30 seconds (change this setting from the search package
parameters). Then, visit the search page and submit some queries. Here
are some features of the openfts-driver you can enjoy:
<ul>
<li> No full re-indexing: A document is indexed only once. You don't
have to rebuilt the index for all the objects every time (intermedia).
<li> Proximity: Ranking results w.r.t how close the keywords were
found in a document. So if you have a document which include the
phrase "full text search" and another document which includes the
words "full", "text", "search", the first one will be ranked higher.
<li> Stemming: It allows to find same words with different
endings. For example, if words "testing" or "tests" are found in a
document, the word "test" will be stored by indexer instead. Search
will also try to find the word "test" if "testing" or "tests" is given
in search query. Note that this scheme lacks exact search possibility,
but usually reduces database size and makes search faster
<li> Different weights of words in the title and body. This affects
ranking of the search results
<li> Much, much more, ...
</ul>
If there are any questions, please post to the forums or email me
directly (<a
href="mailto:k2pts@cytanet.com.cy";>mailto:k2pts@cytanet.com.cy</a> , <a
href="mailto:k2pts@yahoo.com";>mailto:k2pts@yahoo.com</a>). I will try be as
responsive as possible. Soon, I will post a
list of todo items that are related to the acs-service-contract
package and how you can help.