implement highlight feature

This commit is contained in:
yggverse 2024-03-21 23:49:18 +02:00
parent 8651eb4d97
commit efc528c241
2 changed files with 52 additions and 8 deletions

View File

@ -47,11 +47,27 @@
{ {
"field_weights": "field_weights":
{ {
"url": 100, "url":100,
"title": 200, "title":200,
"description": 300, "description":300,
"keywords": 400, "keywords":400,
"body": 500 "body":500
}
},
"highlight":
{
"fields":
[
"url",
"title",
"description",
"keywords",
"body"
],
"options":
{
"around":5,
"limit":140
} }
} }
}, },

View File

@ -169,6 +169,15 @@ foreach ($config->webui->search->options as $key => $value)
} }
} }
// Apply highlight options
if ($config->webui->search->highlight->fields)
{
$query->highlight(
(array) $config->webui->search->highlight->fields,
(array) $config->webui->search->highlight->options
);
}
// Get found // Get found
$found = empty($q) ? $total : $query->get()->getTotal(); $found = empty($q) ? $total : $query->get()->getTotal();
@ -433,19 +442,38 @@ $results = $query->offset($p * $config->webui->pagination->limit - $config->webu
?> ?>
<img src="<?php echo $icon ?>" title="<?php echo $hostname ?>" alt="identicon" /> <img src="<?php echo $icon ?>" title="<?php echo $hostname ?>" alt="identicon" />
<?php if (!empty($result->title)) { ?> <?php if (!empty($result->getHighlight()['title'])) { ?>
<?php foreach ($result->getHighlight()['title'] as $title) { ?>
<div>
<h2><?php echo $title ?></h2>
</div>
<?php } ?>
<?php } else if (!empty($result->title)) { ?>
<div> <div>
<h2><?php echo $result->title ?></h2> <h2><?php echo $result->title ?></h2>
</div> </div>
<?php } ?> <?php } ?>
<?php if (!empty($result->description)) { ?> <?php if (!empty($result->getHighlight()['description'])) { ?>
<?php foreach ($result->getHighlight()['description'] as $description) { ?>
<div><?php echo $description ?></div>
<?php } ?>
<?php } else if (!empty($result->description)) { ?>
<div><?php echo $result->description ?></div> <div><?php echo $result->description ?></div>
<?php } ?> <?php } ?>
<?php if (!empty($result->keywords)) { ?> <?php if (!empty($result->getHighlight()['keywords'])) { ?>
<?php foreach ($result->getHighlight()['keywords'] as $keywords) { ?>
<div><?php echo $keywords ?></div>
<?php } ?>
<?php } else if (!empty($result->keywords)) { ?>
<div> <div>
<?php echo $result->keywords ?> <?php echo $result->keywords ?>
</div> </div>
<?php } ?> <?php } ?>
<?php if (!empty($result->getHighlight()['body'])) { ?>
<?php foreach ($result->getHighlight()['body'] as $body) { ?>
<div><?php echo $body ?></div>
<?php } ?>
<?php } ?>
<div> <div>
<a href="<?php echo $result->url ?>"><?php echo htmlentities(urldecode($result->url)) ?></a> <a href="<?php echo $result->url ?>"><?php echo htmlentities(urldecode($result->url)) ?></a>
<?php if (!in_array($result->get('code'), [0, 200])) { ?> <?php if (!in_array($result->get('code'), [0, 200])) { ?>