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
