summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--_test/tests/inc/indexer_histogram.test.php19
-rw-r--r--inc/indexer.php8
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 {