On Tue, 7 Jan 2003, David THOMAS wrote:
> for instance,
>
> one document has:
> <META NAME="DOC_KEYWORD" CONTENT="swish search engine;test">
> a second document has:
> <META NAME="DOC_KEYWORD" CONTENT="swish search; test">
>
> I'm looking for "swish search" but not for "swish search engine" because
> this is a keyword search.
> How can I do that ?
You can't. Can you do it in Google or any other search engine?
You can do -w "swish search" not "engine" but that means you need to know
the execption.
Swish builds a reverse index, it's not a database that is searching
fields.
What I have done in the past is make "doc_keyword" a property, too. Then
return that property on search results and filter the results. This
messes things up if you are using -b and -m for paged results[*].
We have also talked about adding "strucrture" bits to flag the first and
last words of a metaname so you can do something like:
-w "^swish search$" (looks a little regex like)
to flag to the search code to find "swish" but only if it's at the first
position and "search" if it's the last postion. That's a ways off, I
think.
The other thing people ask for somewhat often is "How can I find docs
that have *anything* set for a given metaname?" In other words, find docs
where a meta is defined and exclude docs where the meta is not defined.
[*] In that case I didn't use paged results from swish, and instead I'd
fetch all results up to a limit, then cache the results using File::Cache
in Perl. Very fast for fetching the next page of results. Also good if
the same query is run often (e.g. you have links that query swish).
--
Bill Moseley moseley@hank.org
Received on Tue Jan 7 15:12:03 2003