1. Go to this page and download the library: Download futape/search library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
futape / search example snippets
use Futape\Search\Matcher\AbstractMatcher;
class EqualsMatcher extends AbstractMatcher
{
const SUPPORTED_VALUE = EqualsValue::class;
/**
* @param mixed $value
* @param mixed $term
* @param HighlighterInterface $highlighter
* @param mixed $highlighted
* @param int $score
*/
protected function matchValue($value, $term, HighlighterInterface $highlighter, &$highlighted, int &$score): void
{
if ($value == $term) {
$highlighted = $highlighter->highlight($highlighted);
$score++;
}
}
}
use Futape\Search\Matcher\AbstractValue;
class EqualsValue extends AbstractValue
{
/**
* @param mixed $highlighted
* @return mixed
*/
protected function resetHighlighted($highlighted)
{
return $this->getHighlighter()->lowlight($highlighted);
}
}
use Futape\Search\AbstractSearchable;
use Your\Domain\Model\Article;
class ArticleSearchable extends AbstractSearchable {
{
/** @var Article */
protected $article;
public function __construct(Article $article)
{
$this->article = $article;
parent::__construct();
}
protected function initMatcherValues(): void
{
$this->registerMatcherValue('tags', new TokenValue($this->article->getTags()));
$this->registerMatcherValue('categories', new TokenValue($this->article->getCategories()));
// ...
}
public function getArticle(): Article
{
return $this->article;
}
}
use Futape\Search\Highlighter\PlainHighlighter;
use Futape\Search\Index;
use Futape\Search\Matcher\Token\TokenMatcher;
use Your\Domain\Model\Article;
// See "Indexed Objects (Searchables)" section for this example searchable
use Your\Domain\Search\ArticleSearchable;
$index = (new Index(new PlainHighlighter()))
// Attach a matcher to process the searchables' values
->attachMatcher(new TokenMatcher())
// Add searchables to the index
->addSearchable(new ArticleSearchable(new Article(42))) // tags: animals, zoo, plants; categories: nature, plants
->addSearchable(new ArticleSearchable(new Article(101))) // tags: park, plants; categories: vacation
->addSearchable(new ArticleSearchable(new Article(61))) // tags: skyscrapers, concrete; categories: vacation, cities
// Execute the search
->search('plants');
foreach ($index->getSearchables() as $searchable) {
var_dump($searchable->getScore());
var_dump($searchable->getMatcherValue('tags')->getScore());
var_dump($searchable->getMatcherValue('tags')->getHighlighted());
var_dump($searchable->getMatcherValue('categories')->getScore());
var_dump($searchable->getMatcherValue('categories')->getHighlighted());
}
/*
first iteration (article 42):
2
1
['animals', 'zoo', '**plants**']
1
['nature', '**plants**']
second iteration (article 101):
1
1
['park', '**plants**']
0
['vacation']
third iteration (article 61):
0
0
['skyscrapers', 'concrete']
0
['vacation', 'cities']
*/
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.