diff --git a/_test/tests/inc/indexer_histogram.test.php b/_test/tests/inc/indexer_histogram.test.php new file mode 100644 index 0000000000000000000000000000000000000000..df6af7a2b11819d0c50fa96499a4c527a5f78926 --- /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 d8768d3ab5327b77866aa90058486e2bacb68ee1..c28499d68e0a0c9d8f88269be1941543feb0e85b 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 {