我不知道这搜索功能是不是够用了

这个其实是很多天前就更新好了的,现在才想起来记录一下。大部分内容都是参考的教程,只是,其中那个搜索结果高亮功能,简单的修改了一下,修改后好像部分功能不能用了呢。

首先是参考内容

参考的还是以前的教程,Django Haystack 全文检索与关键词高亮

只要一步一步的跟随教程,能实现最终的功能并不难。

我修改的内容

实现搜索功能以后,会发现高亮功能并不令人满意。

就像下面那样

关键词前面都以省略号代替,不管你的标题长度有多少,关键词前面一律以省略号代替。

我感觉这个不太合适,原因就是安装的haystack目录下有一个文件highlighting.py,关于搜索结果渲染的函数有:

1
2
3
4
5
6
...
if start_offset > 0:
highlighted_chunk = '...%s' % highlighted_chunk
if end_offset < len(self.text_block):
highlighted_chunk = '%s...' % highlighted_chunk
return highlighted_chunk

这段代码大概在highlighting.py的最下边。

需要把这段代码简单的修改成如下:

1
2
3
4
5
6
7
8
...
if len(self.text_block) < self.max_length:
return self.text_block[:start_offset] + highlighted_chunk
if start_offset > 0:
highlighted_chunk = '...%s' % highlighted_chunk
if end_offset < len(self.text_block):
highlighted_chunk = '%s...' % highlighted_chunk
return highlighted_chunk

这里是需要修改系统源码的,就是说这段代码是在安装的系统文件中修改,暂时网上也找不到替代的办法。

PS:不知道是我修改的时候改错了东西,还是怎样,搜索出来的结果并不能高亮,现在我只能把搜索出来的结果的标题,整体高亮。

这个搜索功能有一个缺点

搜索时要按词组搜索,搜索单个汉字或字母,有的时候搜索不到想要的结果。这可能是与jieba分词有关。

说起来jieba分词,我想要用它来实现一个简单的功能。还在实现过程中,等实现后再回来写写。

想的过程很美好,就是看实现过程是不是顺利。