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

Reply via email to