summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Hamann <michael@content-space.de>2012-07-28 10:50:26 +0200
committerMichael Hamann <michael@content-space.de>2012-07-28 11:34:47 +0200
commit9a9b579a79463369319f9613a630625a99eeded0 (patch)
tree4984b6766b1e6ab3da1fcac84fdfd1d6f9b3df38
parent92a5d12663ce0d2371a16a0b894f9796f020146c (diff)
downloadrpg-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.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 {