diff options
author | Michael Hamann <michael@content-space.de> | 2012-07-28 10:50:26 +0200 |
---|---|---|
committer | Michael Hamann <michael@content-space.de> | 2012-07-28 11:34:47 +0200 |
commit | 9a9b579a79463369319f9613a630625a99eeded0 (patch) | |
tree | 4984b6766b1e6ab3da1fcac84fdfd1d6f9b3df38 | |
parent | 92a5d12663ce0d2371a16a0b894f9796f020146c (diff) | |
download | rpg-9a9b579a79463369319f9613a630625a99eeded0.tar.gz rpg-9a9b579a79463369319f9613a630625a99eeded0.tar.bz2 |
Fix index histogram minlen parameter for metadata keys
This includes a test for the minlen parameter for metadata keys
-rw-r--r-- | _test/tests/inc/indexer_histogram.test.php | 19 | ||||
-rw-r--r-- | inc/indexer.php | 8 |
2 files changed, 24 insertions, 3 deletions
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 { |