Fix #128 ; highlight on multivalued fields fails

This commit is contained in:
Romain Neutron
2011-12-28 14:47:24 +01:00
parent 4ab9a2563b
commit 742befa16a
11 changed files with 38 additions and 19 deletions

View File

@@ -346,9 +346,9 @@ class caption_field implements cache_cacheableInterface
if ($this->databox_field->is_multi() === true)
{
if ($as_string === true && $custom_separator === false)
{
return $this->value;
}
$separator = $this->databox_field->get_separator();
$array_values = self::get_multi_values($this->value, $separator);

View File

@@ -59,8 +59,7 @@ class caption_record implements caption_interface, cache_cacheableInterface
protected function retrieve_fields()
{
if(is_array($this->fields))
if (is_array($this->fields))
return $this->fields;
$fields = array();
@@ -97,7 +96,7 @@ class caption_record implements caption_interface, cache_cacheableInterface
}
catch (Exception $e)
{
}
}
$this->fields = $rec_fields;
@@ -134,7 +133,6 @@ class caption_record implements caption_interface, cache_cacheableInterface
{
$fields = $this->retrieve_fields();
if (isset($this->dces_elements[$label]))
return $fields[$this->dces_elements[$label]];
return null;
}
@@ -172,7 +170,10 @@ class caption_record implements caption_interface, cache_cacheableInterface
, $field->highlight_thesaurus()
);
$fields[$field->get_name()] = $value;
$fields[$field->get_name()] = array(
'value' => $value
, 'separator' => $field->get_databox_field()->get_separator()
);
}
if ($searchEngine instanceof searchEngine_adapter)
@@ -185,7 +186,7 @@ class caption_record implements caption_interface, cache_cacheableInterface
foreach ($fields as $key => $value)
{
$fields[$key] = $ret[$n];
$fields[$key]['value'] = $ret[$n];
$n++;
}
}

View File

@@ -870,9 +870,9 @@ class record_adapter implements record_Interface, cache_cacheableInterface
$titles = array();
foreach ($retrieved_fields as $key => $value)
{
if (trim($value === ''))
if (trim($value['value'] === ''))
continue;
$titles[] = $value;
$titles[] = $value['value'];
}
$title = trim(implode(' - ', $titles));
}

View File

@@ -639,9 +639,20 @@ class searchEngine_adapter_phrasea_engine extends searchEngine_adapter_abstract
foreach ($fields as $name => $field)
{
if ($sxe->description->$name)
$ret[] = str_replace(array('[[em]]', '[[/em]]'), array('<em>', '</em>'), (string) $sxe->description->$name);
{
$val = array();
foreach($sxe->description->$name as $value)
{
$val[] = str_replace(array('[[em]]', '[[/em]]'), array('<em>', '</em>'), (string) $value);
}
$val = implode(' '.$field['separator'].' ', $val);
}
else
$ret[] = $field;
{
$val = $field['value'];
}
$ret[] = $val;
}
return $ret;

View File

@@ -752,8 +752,15 @@ class searchEngine_adapter_sphinx_engine extends searchEngine_adapter_abstract i
'before_match' => "<em>",
'after_match' => "</em>"
);
$fields_to_send = array();
foreach($fields as $k=>$f)
{
$fields_to_send[$k] = $f['value'];
}
return $this->sphinx->BuildExcerpts($fields, $index, $query, $opts);
return $this->sphinx->BuildExcerpts($fields_to_send, $index, $query, $opts);
}
}

View File

@@ -1,5 +1,5 @@
{% macro format_caption(record, highlight, searchEngine) %}
{% for name, value in record.get_caption().get_highlight_fields(highlight, null, searchEngine) %}
<div class="desc{% if loop.index is odd %}im{% endif %}pair"><b>{{name}}</b> : {{value|raw}}</div>
<div class="desc{% if loop.index is odd %}im{% endif %}pair"><b>{{name}}</b> : {{value.value|raw}}</div>
{% endfor %}
{% endmacro %}

View File

@@ -1,5 +1,5 @@
{% macro format_caption(record) %}
{% for name, value in record.get_caption().get_highlight_fields() %}
<div class="desc{% if loop.index is odd %}im{% endif %}pair"><b>{{name}}</b> : {{value|raw}}</div>
<div class="desc{% if loop.index is odd %}im{% endif %}pair"><b>{{name}}</b> : {{value.value|raw}}</div>
{% endfor %}
{% endmacro %}

View File

@@ -1,5 +1,5 @@
{% macro format_caption(record) %}
{% for name, value in record.get_caption().get_highlight_fields() %}
<div class="desc{% if loop.index is odd %}im{% endif %}pair"><b>{{name}}</b> : {{value|raw}}</div>
<div class="desc{% if loop.index is odd %}im{% endif %}pair"><b>{{name}}</b> : {{value.value|raw}}</div>
{% endfor %}
{% endmacro %}

View File

@@ -1,5 +1,5 @@
{% macro format_caption(record) %}
{% for name, value in record.get_caption().get_highlight_fields() %}
<div class="desc{% if loop.index is odd %}im{% endif %}pair"><b>{{name}}</b> : {{value|raw}}</div>
<div class="desc{% if loop.index is odd %}im{% endif %}pair"><b>{{name}}</b> : {{value.value|raw}}</div>
{% endfor %}
{% endmacro %}

View File

@@ -1,5 +1,5 @@
{% macro format_caption(record) %}
{% for name, value in record.get_caption().get_highlight_fields() %}
<div><b>{{name}}</b> : {{value|raw}}</div>
<div><b>{{name}}</b> : {{value.value|raw}}</div>
{% endfor %}
{% endmacro %}

View File

@@ -1,5 +1,5 @@
{% macro format_caption(record, highlight, searchEngine) %}
{% for name, value in record.get_caption().get_highlight_fields(highlight, null, searchEngine) %}
<div class="desc{% if loop.index is odd %}im{% endif %}pair"><b>{{name}}</b> : {{value|raw}}</div>
<div class="desc{% if loop.index is odd %}im{% endif %}pair"><b>{{name}}</b> : {{value.value|raw}}</div>
{% endfor %}
{% endmacro %}