public function HtmlFilterTest::testBoostTerms in Search API Solr 4.x
Same name and namespace in other branches
- 8.3 tests/src/Kernel/Processor/HtmlFilterTest.php \Drupal\Tests\search_api_solr\Kernel\Processor\HtmlFilterTest::testBoostTerms()
Tests term boosts.
File
- tests/
src/ Kernel/ Processor/ HtmlFilterTest.php, line 59
Class
- HtmlFilterTest
- Tests usages of Solr payloads.
Namespace
Drupal\Tests\search_api_solr\Kernel\ProcessorCode
public function testBoostTerms() {
$solr_major_version = $this->server
->getBackend()
->getSolrConnector()
->getSolrMajorVersion();
if (version_compare($solr_major_version, '6', '<')) {
$this
->markTestSkipped('Term boosting requires Solr >= 6.');
return;
}
$this
->assertArrayHasKey('html_filter', $this->index
->getProcessors(), 'HTML filter processor is added.');
$this
->createNode([
'type' => 'page',
'title' => 'Beautiful Page 1',
]);
$this
->createNode([
'type' => 'page',
'title' => 'Beautiful <b>Page</b> 2',
]);
$this
->createNode([
'type' => 'page',
'title' => 'Beautiful Page 3',
]);
$this->index
->reindex();
$this
->indexItems();
$query = new Query($this->index);
$query
->sort('search_api_relevance', QueryInterface::SORT_DESC);
$query
->sort('search_api_id');
$query
->getParseMode()
->setConjunction('OR');
$result = $query
->execute();
$this
->assertEquals([
'entity:node/1:en',
'entity:node/2:en',
'entity:node/3:en',
], array_keys($result
->getResultItems()));
$query = new Query($this->index);
$query
->keys([
'beautiful',
]);
$query
->sort('search_api_relevance', QueryInterface::SORT_DESC);
$query
->sort('search_api_id');
$query
->getParseMode()
->setConjunction('OR');
$result = $query
->execute();
$this
->assertEquals([
'entity:node/1:en',
'entity:node/2:en',
'entity:node/3:en',
], array_keys($result
->getResultItems()));
// Rerank query based on payloads for HTML tags boosts on match.
$query = new Query($this->index);
$query
->keys([
'page',
]);
$query
->sort('search_api_relevance', QueryInterface::SORT_DESC);
$query
->sort('search_api_id');
$query
->getParseMode()
->setConjunction('OR');
$result = $query
->execute();
$this
->assertEquals([
'entity:node/2:en',
'entity:node/1:en',
'entity:node/3:en',
], array_keys($result
->getResultItems()));
$this
->createNode([
'type' => 'page',
'title' => "d'avion",
]);
$this
->createNode([
'type' => 'page',
'title' => "<b>d'avion<b>",
]);
$this
->createNode([
'type' => 'page',
'title' => '๐๐๐พ',
]);
$this
->createNode([
'type' => 'page',
'title' => '<b>More| strange " characters ๐๐๐พ<b>',
]);
$this
->createNode([
'type' => 'page',
'title' => 'More| strange " characters ๐๐๐พ',
]);
$this
->indexItems();
$query = new Query($this->index);
$query
->keys([
"d'avion",
]);
$query
->sort('search_api_relevance', QueryInterface::SORT_DESC);
$query
->sort('search_api_id');
$query
->getParseMode()
->setConjunction('OR');
$result = $query
->execute();
$this
->assertEquals([
'entity:node/5:en',
'entity:node/4:en',
], array_keys($result
->getResultItems()));
$query = new Query($this->index);
$query
->keys([
'๐๐๐พ',
]);
$query
->sort('search_api_relevance', QueryInterface::SORT_DESC);
$query
->sort('search_api_id');
$query
->getParseMode()
->setConjunction('OR');
$result = $query
->execute();
$this
->assertEquals([
'entity:node/7:en',
'entity:node/6:en',
'entity:node/8:en',
], array_keys($result
->getResultItems()));
$this
->createNode([
'type' => 'page',
'title' => "<b>VeryLongStingsWithMoreThanOneHoundredCharactersShouldNotNeitherBeIndexedAsTextNorAsBoostedTokenAndShouldNotLeadToExceptionsDuringIndexing<b>",
]);
$this
->indexItems();
$query = new Query($this->index);
$query
->keys([
'VeryLongStingsWithMoreThanOneHoundredCharactersShouldNotNeitherBeIndexedAsTextNorAsBoostedTokenAndShouldNotLeadToExceptionsDuringIndexing',
]);
$query
->sort('search_api_relevance', QueryInterface::SORT_DESC);
$query
->sort('search_api_id');
$query
->getParseMode()
->setConjunction('OR');
$result = $query
->execute();
$this
->assertEquals([], array_keys($result
->getResultItems()));
$this
->createNode([
'type' => 'page',
'title' => "<b>VeryLongStingsWithMoreThanOneHoundredCharactersShouldNotNeitherBeIndexedAsTextNorAsBoostedTokenAndShouldNotLeadToExceptionsDuringIndexing<b>",
]);
$this
->indexItems();
$query = new Query($this->index);
$query
->keys([
'VeryLongStingsWithMoreThanOneHoundredCharactersShouldNotNeitherBeIndexedAsTextNorAsBoostedTokenAndShouldNotLeadToExceptionsDuringIndexing',
]);
$query
->sort('search_api_relevance', QueryInterface::SORT_DESC);
$query
->sort('search_api_id');
$query
->getParseMode()
->setConjunction('OR');
$result = $query
->execute();
$this
->assertEquals([], array_keys($result
->getResultItems()));
}