# HG changeset patch # User ymh # Date 1486136109 -3600 # Node ID a53762d61c06083fe76e26fe2c5a5fe0275cd7a7 # Parent c71923e6fa2f602cfc25d95a65fa71f2ef092519 Improve filters on themes, allow to filter by lexvo + olac. Bug #0025934 diff -r c71923e6fa2f -r a53762d61c06 server/src/app/Console/Commands/IndexDocuments.php --- a/server/src/app/Console/Commands/IndexDocuments.php Fri Feb 03 13:01:08 2017 +0100 +++ b/server/src/app/Console/Commands/IndexDocuments.php Fri Feb 03 16:35:09 2017 +0100 @@ -207,25 +207,25 @@ array_push($res, [ 'uri' => $mBnf[0], 'code' => $mBnf[1], - 'type' => 'bnf' + 'type' => Utils::SUBJECT_TYPE_BNF ]); } elseif($s instanceof Resource && preg_match(config('corpusparole.lexvo_url_regexp'), $s->getUri(), $mLexvo) === 1) { array_push($res, [ 'uri' => $mLexvo[0], 'code' => $mLexvo[1], - 'type' => 'lxv' + 'type' => Utils::SUBJECT_TYPE_LEXVO ]); } elseif($s instanceof Literal && strpos($s->getDatatypeUri(), config('corpusparole.olac_base_url')) === 0 ) { array_push($res, [ 'uri' => $s->getValue(), 'code' => $s->getValue(), - 'type' => 'olac' + 'type' => Utils::SUBJECT_TYPE_OLAC ]); } elseif($s instanceof Literal) { array_push($res, [ 'uri' => $s->getValue(), 'code' => $s->getValue(), - 'type' => 'txt' + 'type' => Utils::SUBJECT_TYPE_TXT ]); } return $res; @@ -235,7 +235,7 @@ array_unique(array_reduce( $sres, function($r, $so) { - if($so['type'] === 'bnf') { + if($so['type'] === Utils::SUBJECT_TYPE_BNF) { array_push($r, $so['uri']); } return $r; @@ -246,7 +246,7 @@ array_unique(array_reduce( $sres, function($r, $so) { - if($so['type'] === 'lxv') { + if($so['type'] === Utils::SUBJECT_TYPE_LEXVO) { array_push($r, $so['uri']); } return $r; @@ -256,12 +256,12 @@ return array_map(function($so) use ($labelsBnf, $labelsLexvo) { $label = $so['uri']; - if($so['type'] === 'bnf') { + if($so['type'] === Utils::SUBJECT_TYPE_BNF) { $label = $labelsBnf[$label]; - } elseif ($so['type'] === 'lxv') { + } elseif ($so['type'] === Utils::SUBJECT_TYPE_LEXVO) { $label = $labelsLexvo[$label]; } - return [ 'label' => $label, 'code' => $so['code'], 'label_code' => $label."|".$so['type']."|".$so['code'] ]; }, $sres + return [ 'label' => $label, 'code' => $so['type']."|".$so['code'], 'label_code' => $label."|".$so['type']."|".$so['code'] ]; }, $sres ); } diff -r c71923e6fa2f -r a53762d61c06 server/src/app/Libraries/Filters/CorpusFilterManager.php --- a/server/src/app/Libraries/Filters/CorpusFilterManager.php Fri Feb 03 13:01:08 2017 +0100 +++ b/server/src/app/Libraries/Filters/CorpusFilterManager.php Fri Feb 03 16:35:09 2017 +0100 @@ -142,11 +142,16 @@ return array_reduce($entities, function($res, $e) { if(preg_match(config('corpusparole.bnf_ark_url_regexp'), $e, $m)) { - array_push($res, $m[1]); + array_push($res, Utils::SUBJECT_TYPE_BNF."|".$m[1]); } elseif(Utils::startsWith($e, config('corpusparole.bnf_ark_id_base'))) { - array_push($res, $e); + array_push($res, Utils::SUBJECT_TYPE_BNF."|".$e); + } elseif(preg_match(config('corpusparole.lexvo_url_regexp'), $e, $m)) { + array_push($res, Utils::SUBJECT_TYPE_LEXVO."|".$m[1]); + } elseif(Utils::startsWith($e, Utils::SUBJECT_TYPE_OLAC.':')) { + array_push($res, Utils::SUBJECT_TYPE_OLAC."|".substr($e,5)); + } else { + array_push($res, Utils::SUBJECT_TYPE_TXT."|$e"); } - return $res; }, []); } diff -r c71923e6fa2f -r a53762d61c06 server/src/app/Libraries/Utils.php --- a/server/src/app/Libraries/Utils.php Fri Feb 03 13:01:08 2017 +0100 +++ b/server/src/app/Libraries/Utils.php Fri Feb 03 16:35:09 2017 +0100 @@ -11,6 +11,10 @@ */ class Utils { + const SUBJECT_TYPE_BNF = 'bnf'; + const SUBJECT_TYPE_LEXVO = 'lxv'; + const SUBJECT_TYPE_OLAC = 'olac'; + const SUBJECT_TYPE_TXT = 'txt'; /** * convert DateIntervals to milliseconds diff -r c71923e6fa2f -r a53762d61c06 server/src/tests/Libraries/Filters/CorpusFilterManagerTest.php --- a/server/src/tests/Libraries/Filters/CorpusFilterManagerTest.php Fri Feb 03 13:01:08 2017 +0100 +++ b/server/src/tests/Libraries/Filters/CorpusFilterManagerTest.php Fri Feb 03 16:35:09 2017 +0100 @@ -162,9 +162,10 @@ public function testPrepareThemesNoOp() { $themesInput = ['ark:/12148/cb11937931x', 'ark:/12148/cb11946662b', 'ark:/12148/cb13318415c']; + $themesExpectedOutput = ['bnf|ark:/12148/cb11937931x', 'bnf|ark:/12148/cb11946662b', 'bnf|ark:/12148/cb13318415c']; $filterManager = new CorpusFilterManager(); $themesOutput = $filterManager->prepareTheme($themesInput); - $this->assertEquals($themesInput, $themesOutput); + $this->assertEquals($themesExpectedOutput, $themesOutput); } /** @@ -177,7 +178,7 @@ $themesInput = ['http://ark.bnf.fr/ark:/12148/cb11937931x', 'http://data.bnf.fr/ark:/12148/cb11946662b', 'https://ark.bnf.fr/ark:/12148/cb13318415c']; $filterManager = new CorpusFilterManager(); $themesOutput = $filterManager->prepareTheme($themesInput); - $this->assertEquals(['ark:/12148/cb11937931x', 'ark:/12148/cb11946662b', 'ark:/12148/cb13318415c'], $themesOutput); + $this->assertEquals(['bnf|ark:/12148/cb11937931x', 'bnf|ark:/12148/cb11946662b', 'bnf|ark:/12148/cb13318415c'], $themesOutput); } @@ -191,7 +192,7 @@ $themesInput = ['ark:/12148/cb11937931x', 'foo', 'ark:/12148/cb11946662b', 'ark:/12148/cb13318415c', 'bar']; $filterManager = new CorpusFilterManager(); $themesOutput = $filterManager->prepareTheme($themesInput); - $this->assertEquals(['ark:/12148/cb11937931x', 'ark:/12148/cb11946662b', 'ark:/12148/cb13318415c'], $themesOutput); + $this->assertEquals(['bnf|ark:/12148/cb11937931x', 'txt|foo', 'bnf|ark:/12148/cb11946662b', 'bnf|ark:/12148/cb13318415c', 'txt|bar'], $themesOutput); } /** @@ -204,7 +205,7 @@ $themesInput = ['ark:/12148/cb11937931x', 'foo', 'http://data.bnf.fr/ark:/12148/cb11946662b', 'ark:/12148/cb13318415c', 'bar']; $filterManager = new CorpusFilterManager(); $themesOutput = $filterManager->prepareTheme($themesInput); - $this->assertEquals(['ark:/12148/cb11937931x', 'ark:/12148/cb11946662b', 'ark:/12148/cb13318415c'], $themesOutput); + $this->assertEquals(['bnf|ark:/12148/cb11937931x', 'txt|foo', 'bnf|ark:/12148/cb11946662b', 'bnf|ark:/12148/cb13318415c', 'txt|bar'], $themesOutput); } /**