10👍
i’ve never used haystack, but from a quick look in the docs and the source it looks like you can make your own custom highlighter and tell haystack to use that instead
from haystack.utils import Highlighter
from django.utils.html import strip_tags
class MyHighlighter(Highlighter):
def highlight(self, text_block):
self.text_block = strip_tags(text_block)
highlight_locations = self.find_highlightable_words()
start_offset, end_offset = self.find_window(highlight_locations)
# this is my only edit here, but you'll have to experiment
start_offset = 0
return self.render_html(highlight_locations, start_offset, end_offset)
and then set
HAYSTACK_CUSTOM_HIGHLIGHTER = 'path.to.your.highligher.MyHighlighter'
in your settings.py
2👍
The answer by @second works, however if you also don’t want it to cut off the end of the string and you’re under the max length you can try this. Still testing it but it seems to work:
class MyHighlighter(Highlighter):
"""
Custom highlighter
"""
def highlight(self, text_block):
self.text_block = strip_tags(text_block)
highlight_locations = self.find_highlightable_words()
start_offset, end_offset = self.find_window(highlight_locations)
text_len = len(self.text_block)
if text_len <= self.max_length:
start_offset = 0
elif (text_len - 1 - start_offset) <= self.max_length:
end_offset = text_len
start_offset = end_offset - self.max_length
if start_offset < 0:
start_offset = 0
return self.render_html(highlight_locations, start_offset, end_offset)
- Django ALLOWED_HOSTS with ELB HealthCheck
- Django: migration x in app x has no Migration class
- Django custom for complex Func (sql function)
- How disable return of HTML error page with django rest framework?
Source:stackexchange.com