Add relevance to sorting criteria

This commit is contained in:
Sebastian Meyer 2012-08-14 17:39:30 +02:00
parent eaebfe699c
commit d809cff370
3 changed files with 20 additions and 2 deletions

View File

@ -278,11 +278,18 @@ class tx_dlf_listview extends tx_dlf_plugin {
$uniqId = uniqid($prefix.'-');
$sorting .= '<label for="'.$uniqId.'">'.$this->pi_getLL('orderBy', '', TRUE).'</label><select id="'.$uniqId.'" name="'.$this->prefixId.'[order]" onchange="javascript:this.form.submit();"><option value=""></option>';
$sorting .= '<label for="'.$uniqId.'">'.$this->pi_getLL('orderBy', '', TRUE).'</label><select id="'.$uniqId.'" name="'.$this->prefixId.'[order]" onchange="javascript:this.form.submit();">';
// Add relevance sorting if this is a search result list.
if ($this->list->metadata['options']['source'] == 'search') {
$sorting .= '<option value="relevance"'.(($this->list->metadata['options']['order'] == 'relevance') ? ' selected="selected"' : '').'>'.$this->pi_getLL('relevance', '', TRUE).'</option>';
}
foreach ($this->sortables as $index_name => $label) {
$sorting .= '<option value="'.$index_name.'"'.(($this->piVars['order'] == $index_name) ? ' selected="selected"' : '').'>'.htmlspecialchars($label).'</option>';
$sorting .= '<option value="'.$index_name.'"'.(($this->list->metadata['options']['order'] == $index_name) ? ' selected="selected"' : '').'>'.htmlspecialchars($label).'</option>';
}

View File

@ -19,6 +19,7 @@
<label index="separator"> - </label>
<label index="skip">...</label>
<label index="orderBy">Order by: </label>
<label index="relevance">relevance</label>
<label index="noTitle">[no title]</label>
</languageKey>
<languageKey index="de" type="array">
@ -35,6 +36,7 @@
<label index="separator"> - </label>
<label index="skip">...</label>
<label index="orderBy">Sortieren nach: </label>
<label index="relevance">Relevanz</label>
<label index="noTitle">[kein Titel]</label>
</languageKey>
</data>

View File

@ -243,6 +243,9 @@ class tx_dlf_search extends tx_dlf_plugin {
}
// Keep track of relevance.
$i = 0;
// Process results.
foreach ($query->response->docs as $doc) {
@ -271,6 +274,10 @@ class tx_dlf_search extends tx_dlf_plugin {
}
}
// Add relevance to sorting values.
$docSorting['relevance'] = str_pad($i, 6, '0', STR_PAD_LEFT);
// Split toplevel documents from subparts.
if ($doc->toplevel == 1) {
@ -299,6 +306,8 @@ class tx_dlf_search extends tx_dlf_plugin {
}
$i++;
}
// Check if the toplevel documents have metadata.