Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/php/pecl-search_engine-swish

Swish-e bindings
https://github.com/php/pecl-search_engine-swish

Last synced: 5 days ago
JSON representation

Swish-e bindings

Awesome Lists containing this project

README

        

README for PHP Swish-e bindings
===============================
$Id$

This extension provides bindings to the swish-e API.

Swish-e is a GPL licensed search engine, with a clause that allows applications
to link against the libswish-e library to use the published API to do so
without invoking the viral portion of the GPL. This is subject to returning a
link back to the swish-e source code.

Here it is:
http://swish-e.org/index.html

How do I use this?
==================

First you need to have built a swish index. Consult the swish docs for details
on that: http://swish-e.org/docs/index.html

% swish-e -i /path/to/stuff/to/index

Now build this PHP module:

% phpize
% configure --with-swish=/usr/local
% make
% su -
# make install
# echo 'extension=swish.so' >> /usr/local/lib/php.ini

Then you can code up an interface to the index using PHP:

query("lemons");
echo "There are ", $results->hits, " lemons\n";
while ($r = $results->nextResult()) {
printf("in file %s, relevance %d\n",
$r->swishdocpath,
$r->swishrank
);
}
?>

Brief API reference:
====================
See http://swish-e.org/docs/swish-library.html for more background.

/* major handle class */

class Swish {
public indexes = array(); //indexes and their properties

SwishSearch prepare([string query]);
SwishResult query(string query);

array getMetaList(string indexname);
array getPropertyList(string indexname);
}

/* search handle class */

class SwishSearch {
void setStructure(int structure);
void setPhraseDelimiter(string delimiter_char);
void setSort(string sort_string);
void setLimit(string property, string low, string high);
void resetLimit();
SwishResults execute([string query]);
}

/* search results class */

class SwishResults {
public hits = 0;
public indexes = array();

SwishResult nextResult();
int seekResult(int position);
array getParsedWords(string indexname);
array getRemovedStopWords(string indexname);
}

/* search result class */

class SwishResult {
/*
properties defined by Swish,
automatically "converted" to object properties
*/

array getMetaList();
array stem(string word);
}

vim:ts=2:sw=2:et: