Skip to content

phpsource/pecl-search_engine-swish

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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:

<?php
$h = new Swish("index.swish-e");
$results = $h->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:

Packages

No packages published

Languages

  • PHP 51.8%
  • C 47.8%
  • C++ 0.4%