From 9a9b579a79463369319f9613a630625a99eeded0 Mon Sep 17 00:00:00 2001 From: Michael Hamann <michael@content-space.de> Date: Sat, 28 Jul 2012 10:50:26 +0200 Subject: [PATCH] Fix index histogram minlen parameter for metadata keys This includes a test for the minlen parameter for metadata keys --- _test/tests/inc/indexer_histogram.test.php | 19 +++++++++++++++++++ inc/indexer.php | 8 +++++--- 2 files changed, 24 insertions(+), 3 deletions(-) create mode 100644 _test/tests/inc/indexer_histogram.test.php diff --git a/_test/tests/inc/indexer_histogram.test.php b/_test/tests/inc/indexer_histogram.test.php new file mode 100644 index 000000000..df6af7a2b --- /dev/null +++ b/_test/tests/inc/indexer_histogram.test.php @@ -0,0 +1,19 @@ +<?php +/** + * Tests the histogram function of the indexer. + * + * @author Michael Hamann <michael@content-space.de> + */ +class indexer_histogram_test extends DokuWikiTest { + function test_minlength() { + $indexer = idx_get_indexer(); + $indexer->addMetaKeys('histo1', 'testkey', array('foo', 'bar', 'foobar')); + $indexer->addMetaKeys('histo2', 'testkey', array('bar', 'testing')); + $indexer->addMetaKeys('histo3', 'testkey', array('foo', 'foobar')); + $histogram4 = $indexer->histogram(1, 0, 4, 'testkey'); + $this->assertEquals(array('foobar' => 2, 'testing' => 1), $histogram4); + $histogram2 = $indexer->histogram(1, 0, 2, 'testkey'); + $this->assertEquals(array('foobar' => 2, 'testing' => 1, 'foo' => 2, 'bar' => 2), $histogram2); + } + +} diff --git a/inc/indexer.php b/inc/indexer.php index d8768d3ab..c28499d68 100644 --- a/inc/indexer.php +++ b/inc/indexer.php @@ -755,13 +755,15 @@ class Doku_Indexer { $val_idx = array(); foreach ($index as $wid => $line) { $freq = $this->countTuples($line); - if ($freq >= $min && (!$max || $freq <= $max) && strlen($val) >= $minlen) + if ($freq >= $min && (!$max || $freq <= $max)) $val_idx[$wid] = $freq; } if (!empty($val_idx)) { $words = $this->getIndex($metaname.'_w', ''); - foreach ($val_idx as $wid => $freq) - $result[$words[$wid]] = $freq; + foreach ($val_idx as $wid => $freq) { + if (strlen($words[$wid]) >= $minlen) + $result[$words[$wid]] = $freq; + } } } else { -- GitLab