jenkins-bot has submitted this change and it was merged.
Change subject: Include site link page names in search index text
......................................................................
Include site link page names in search index text
Change-Id: I7b3b2443f651f7add62b52390a29a5d89f46c7b2
---
M repo/Wikibase.classes.php
A repo/includes/ItemSearchTextGenerator.php
M repo/includes/content/ItemContent.php
A repo/tests/phpunit/includes/ItemSearchTextGeneratorTest.php
M repo/tests/phpunit/includes/content/ItemContentTest.php
5 files changed, 148 insertions(+), 0 deletions(-)
Approvals:
Jeroen De Dauw: Looks good to me, approved
jenkins-bot: Verified
diff --git a/repo/Wikibase.classes.php b/repo/Wikibase.classes.php
index 9bf8e86..de62de9 100644
--- a/repo/Wikibase.classes.php
+++ b/repo/Wikibase.classes.php
@@ -47,6 +47,7 @@
'Wikibase\NamespaceUtils' => 'includes/NamespaceUtils.php',
'Wikibase\PropertyView' => 'includes/PropertyView.php',
'Wikibase\Repo\EntitySearchTextGenerator' =>
'includes/EntitySearchTextGenerator.php',
+ 'Wikibase\Repo\ItemSearchTextGenerator' =>
'includes/ItemSearchTextGenerator.php',
'Wikibase\Summary' => 'includes/Summary.php',
'Wikibase\SummaryFormatter' => 'includes/SummaryFormatter.php',
'Wikibase\Repo\WikibaseRepo' => 'includes/WikibaseRepo.php',
diff --git a/repo/includes/ItemSearchTextGenerator.php
b/repo/includes/ItemSearchTextGenerator.php
new file mode 100644
index 0000000..5de6e97
--- /dev/null
+++ b/repo/includes/ItemSearchTextGenerator.php
@@ -0,0 +1,45 @@
+<?php
+
+namespace Wikibase\Repo;
+
+use Wikibase\Item;
+
+/**
+ * @since 0.5
+ *
+ * @licence GNU GPL v2+
+ * @author Katie Filbert < [email protected] >
+ */
+class ItemSearchTextGenerator {
+
+ /**
+ * @param Item $item
+ *
+ * @return string
+ */
+ public function generate( Item $item ) {
+ $entitySearchTextGenerator = new EntitySearchTextGenerator();
+ $text = $entitySearchTextGenerator->generate( $item );
+
+ $siteLinks = $item->getSimpleSiteLinks();
+ $text .= $this->getSiteLinksText( $siteLinks );
+
+ return $text;
+ }
+
+ /**
+ * @param SimpleSiteLink[]
+ *
+ * @return string
+ */
+ protected function getSiteLinksText( array $siteLinks ) {
+ $pages = array();
+
+ foreach( $siteLinks as $siteLink ) {
+ $pages[] = $siteLink->getPageName();
+ }
+
+ return "\n" . implode( "\n", $pages );
+ }
+
+}
diff --git a/repo/includes/content/ItemContent.php
b/repo/includes/content/ItemContent.php
index 80fa085..7259d74 100644
--- a/repo/includes/content/ItemContent.php
+++ b/repo/includes/content/ItemContent.php
@@ -13,6 +13,7 @@
use Status;
use Title;
use User;
+use Wikibase\Repo\ItemSearchTextGenerator;
use Wikibase\Repo\WikibaseRepo;
use WikiPage;
@@ -272,4 +273,14 @@
array( new ItemModificationUpdate( $this ) )
);
}
+
+ /**
+ * @see EntityContent::getTextForSearchIndex()
+ */
+ public function getTextForSearchIndex() {
+ $item = $this->getEntity();
+
+ $searchTextGenerator = new ItemSearchTextGenerator();
+ return $searchTextGenerator->generate( $item );
+ }
}
diff --git a/repo/tests/phpunit/includes/ItemSearchTextGeneratorTest.php
b/repo/tests/phpunit/includes/ItemSearchTextGeneratorTest.php
new file mode 100644
index 0000000..8c0bc40
--- /dev/null
+++ b/repo/tests/phpunit/includes/ItemSearchTextGeneratorTest.php
@@ -0,0 +1,67 @@
+<?php
+
+namespace Wikibase\Test;
+
+use Wikibase\DataModel\SimpleSiteLink;
+use Wikibase\Item;
+use Wikibase\Repo\ItemSearchTextGenerator;
+
+/**
+ * @covers Wikibase\Repo\ItemSearchTextGenerator
+ *
+ * @file
+ * @since 0.5
+ *
+ * @ingroup WikibaseRepoTest
+ * @ingroup Test
+ *
+ * @licence GNU GPL v2+
+ * @author Katie Filbert < [email protected] >
+ */
+class ItemSearchTextGeneratorTest extends \PHPUnit_Framework_TestCase {
+
+ public function generateProvider() {
+ $item = Item::newEmpty();
+
+ $item->setLabel( 'en', 'Test' );
+ $item->setLabel( 'de', 'Testen' );
+ $item->setDescription( 'en', 'city in Spain' );
+ $item->setAliases( 'en', array( 'abc', 'cde' ) );
+ $item->setAliases( 'de', array( 'xyz', 'uvw' ) );
+ $item->addSimpleSiteLink( new SimpleSiteLink( 'dewiki',
'Berlin' ) );
+ $item->addSimpleSiteLink( new SimpleSiteLink( 'enwiki', 'Rome'
) );
+
+ $patterns = array(
+ '/^Test$/',
+ '/^Testen$/',
+ '/^city in Spain$/',
+ '/^abc$/',
+ '/^cde$/',
+ '/^uvw$/',
+ '/^xyz$/',
+ '/^(?!abcde).*$/',
+ '/^Berlin$/',
+ '/^Rome$/'
+ );
+
+ return array(
+ array( $item, $patterns )
+ );
+ }
+
+ /**
+ * @dataProvider generateProvider
+ *
+ * @param Item $item
+ * @param array $patterns
+ */
+ public function testGenerate( Item $item, array $patterns ) {
+ $generator = new ItemSearchTextGenerator();
+ $text = $generator->generate( $item );
+
+ foreach ( $patterns as $pattern ) {
+ $this->assertRegExp( $pattern . 'm', $text );
+ }
+ }
+
+}
diff --git a/repo/tests/phpunit/includes/content/ItemContentTest.php
b/repo/tests/phpunit/includes/content/ItemContentTest.php
index 79434ae..35ec1ea 100644
--- a/repo/tests/phpunit/includes/content/ItemContentTest.php
+++ b/repo/tests/phpunit/includes/content/ItemContentTest.php
@@ -192,4 +192,28 @@
$this->assertEquals( $equals, $actual );
}
+ /**
+ * Tests @see Wikibase\Entity::getTextForSearchIndex
+ *
+ * @dataProvider getTextForSearchIndexProvider
+ *
+ * @param ItemContent $itemContent
+ * @param string $pattern
+ */
+ public function testGetTextForSearchIndex( ItemContent $itemContent,
$pattern ) {
+ $text = $itemContent->getTextForSearchIndex();
+ $this->assertRegExp( $pattern . 'm', $text );
+ }
+
+ public function getTextForSearchIndexProvider() {
+ $itemContent = $this->newEmpty();
+ $itemContent->getEntity()->setLabel( 'en', "cake" );
+ $itemContent->getEntity()->addSimpleSiteLink( new
SimpleSiteLink( 'dewiki', 'Berlin' ) );
+
+ return array(
+ array( $itemContent, '/^cake$/' ),
+ array( $itemContent, '/^Berlin$/' )
+ );
+ }
+
}
--
To view, visit https://gerrit.wikimedia.org/r/91328
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I7b3b2443f651f7add62b52390a29a5d89f46c7b2
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Aude <[email protected]>
Gerrit-Reviewer: Addshore <[email protected]>
Gerrit-Reviewer: Daniel Kinzler <[email protected]>
Gerrit-Reviewer: Jeroen De Dauw <[email protected]>
Gerrit-Reviewer: Tobias Gritschacher <[email protected]>
Gerrit-Reviewer: jenkins-bot
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits