MaxSem has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/390848 )

Change subject: Normalize titles passed to QueryHelper::matchPage()
......................................................................

Normalize titles passed to QueryHelper::matchPage()

So that linksto:foo would be the same as linksto:Foo
Requested at 
https://meta.wikimedia.org/wiki/2017_Community_Wishlist_Survey/Search/Linksto_should_be_case-insensitive_in_the_first_character

Change-Id: Id477b5662ed35726eff6a597c42fa953f1f49381
---
M includes/Query/QueryHelper.php
A tests/unit/Query/QueryHelperTest.php
2 files changed, 44 insertions(+), 2 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/CirrusSearch 
refs/changes/48/390848/1

diff --git a/includes/Query/QueryHelper.php b/includes/Query/QueryHelper.php
index 223e7c9..ae3814d 100644
--- a/includes/Query/QueryHelper.php
+++ b/includes/Query/QueryHelper.php
@@ -3,6 +3,7 @@
 namespace CirrusSearch\Query;
 
 use CirrusSearch\Search\SearchContext;
+use Title;
 
 /**
  * helpers for building queries
@@ -19,10 +20,12 @@
         * @return \Elastica\Query\Match For matching $title to $field
         */
        public static function matchPage( $field, $title, $underscores = false 
) {
+               $t = Title::newFromText( $title );
+               if ( $t ) {
+                       $title = $t->getPrefixedText();
+               }
                if ( $underscores ) {
                        $title = str_replace( ' ', '_', $title );
-               } else {
-                       $title = str_replace( '_', ' ', $title );
                }
                $match = new \Elastica\Query\Match();
                $match->setFieldQuery( $field, $title );
diff --git a/tests/unit/Query/QueryHelperTest.php 
b/tests/unit/Query/QueryHelperTest.php
new file mode 100644
index 0000000..ccd37db
--- /dev/null
+++ b/tests/unit/Query/QueryHelperTest.php
@@ -0,0 +1,39 @@
+<?php
+
+namespace CirrusSearch\Query;
+
+use CirrusSearch\CirrusTestCase;
+
+/**
+ * @group CirrusSearch
+ */
+class QueryHelperTest extends CirrusTestCase {
+       /**
+        * @dataProvider provideMatchPage
+        *
+        * @param $expected
+        * @param $field
+        * @param $title
+        * @param $underscores
+        */
+       public function testMatchPage( $expected, $field, $title, $underscores 
) {
+               $match = QueryHelper::matchPage( $field, $title, $underscores );
+
+               $this->assertType( \Elastica\Query\Match::class, $match );
+
+               $expectedArray = [ $field => [ 'query' => $expected ] ];
+
+               $this::assertEquals( json_encode( $expectedArray, 
JSON_PRETTY_PRINT ),
+                       json_encode( $match->getParams(), JSON_PRETTY_PRINT )
+               );
+       }
+
+       public function provideMatchPage() {
+               return [
+                       [ 'Page title', 'foo', 'Page title', false ],
+                       [ 'Page title', 'foo', 'page_title', false ],
+                       [ 'Page_title', 'foo', 'Page title', true ],
+                       [ 'Page_title', 'foo', 'Page_title', true ],
+               ];
+       }
+}

-- 
To view, visit https://gerrit.wikimedia.org/r/390848
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Id477b5662ed35726eff6a597c42fa953f1f49381
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/CirrusSearch
Gerrit-Branch: master
Gerrit-Owner: MaxSem <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to