Solr高亮显示highlight的三种实现

2019-03-27 00:49|来源: 网路

高亮显示在搜索中使用的比较多,比较常用的有三种使用方式,如果要对某field做高亮显示,必须对该field设置stored=true
      第一种是普通的高亮显示Highlighter,根据查询的docIdSet,获取Documents,并获取当前document的需要高亮的field的value,根据query的term和该field的value做匹配算法
       第二种是,快速高亮显示FastVectorHighlighter,效率比普通的高亮显示要高;需要定义termvector(占用空间和IO),包括position和offset,
根据query term的termvector到field value中做快速的定位标记,进而实现快速的高亮显示
        第三种是在solr外部做高亮显示,由于高亮显示需要对field设置为store=true,所有对于单节点数据量比较大并且该字段比较大的话,会消耗大量的IO操作,那么可以把该字段存储在另外的地方,比如Hbase,在外部做高亮显示的匹配。

 

转载:http://blog.csdn.net/yangbutao/article/details/17472961


转自:http://www.cnblogs.com/a198720/p/3891787

相关问答

更多
  • 重启,大功告成随便检索一个词,看看是不是结果后面多了一个尾巴? 像这样的: Standards Based Open Interfaces - XML and HTTP Scalability - Efficient Replication to other Solr Search Servers Flexible and Adaptable with XML configuration and Schema SOLR1000 刚开始这种怪异的表现方式很不合我的胃口,为什么不把高亮标示直接标示到结果中呢? ...
  • Github使用pygments来突出语法。 Pygments在服务器上运行,而不是纯粹的Javascript客户端解决方案。 如果您正在寻找Javascript解决方案, 请查看对各种选项的评论 。 Github uses pygments to highlight syntax. Pygments is running on the server, instead of a pure Javascript client solution. If you're looking for a Javascri ...
  • 可以根据本答案中的方法将光标移动到contenteditable元素的末尾。 该方法使用window.getSelection()方法来查找光标位置。 我对您的代码进行了一些更改。 添加了一个test检查,以查看正则表达式是否与内容匹配,以避免调用replace并在每个Enter键击上设置editor.innerHTML ,就像原始代码一样。 添加了对cursorManager.setEndOfContenteditable方法的调用(来自上面引用的答案),以便在replace操作后将光标重置到编辑器的末尾 ...
  • 需要插入的参数是hl.q ,其基本意思是“我希望这个短语被突出显示”,并且hl.usePhraseHighlighter = true,hl.useFastVectorHighlighter = true 所以通过添加我的原始查询: &hl.q="Day+1"&hl.usePhraseHighlighter=true&hl.useFastVectorHighlighter=true工作。 对于B)我改变了fq = post:"day 1" OR title:"day 1"到fq = post:"day 1" ...
  • 这里hl.fl应该是需要突出显示的字段。记住这个字段也需要编入索引。 Here hl.fl should be the field which needs to be highlighted.Remember this field needs to be indexed too.
  • Visual Studio UI是在WPF中实现的,所以我猜测分割条只是一个半透明的填充矩形。 但是,GDI对透明度的支持相当差。 您可以使用半透明,始终在顶部的分层窗口获得相同的效果。 这是一个简单的解决方案,因为您不必担心重新绘制任何内容。 你只需移动窗口即可。 对另一个问题的这个答案有一些代码可以创建这样一个窗口(用于不同的目的)。 The Visual Studio UI is implemented in WPF, so I'd guess that the splitter bar is jus ...
  • 如果您使用的是Ajax-solr,则不会使用Solr服务器突出显示参数。 Solr-Ajax将创建一个javascript列表,其中包含您使用facet组件键入的匹配单词。 换句话说,如果您使用的是ajax-solr ,则需要修改AutocompleteWidget.js 您需要从第23行到第33行的原始自动完成路透社示例进行修改。 并用此部分代码 替换它 $(self.target).find('input').autocomplete('destroy').autocomplete({ ...
  • 如果要保持启用goAlwaysShowEditor选项并仅突出显示始终显示的编辑器,则需要访问InplaceEditor属性。 这需要子类化您的字符串网格类并更改TCustomMaskEdit编辑器的颜色,默认情况下是TCustomMaskEdit控件类。 在此代码中显示,如何更改inplace编辑器的颜色,具体取决于字符串网格的时间 关注与否: type TStringGrid = class(Grids.TStringGrid) private procedure CMEnter(var ...
  • 将UITableViewCell的selectionStyle属性设置为.None 。 这将允许选择但阻止默认突出显示行为。 Set the selectionStyle property of your UITableViewCell to .None. This will permit selection but prevent the default highlighting behavior.
  • 我认为没有任何方法可以完全按照您的要求进行操作,除非后期处理由您决定,对于较大的结果集效率不高。 也许你应该问一个不同的问题,即使返回的文件实际上是完全不同的,即使这些片段是相同的。 如果文件不同,可能会显示所有文件的价值,而不是重复删除。 您可以尝试增强搜索结果显示以显示有关文档的更多信息,以便用户可以区分它们 - 可能不依赖于突出显示,但也显示文档的其他部分? 我确实认为,问题的核心是需要在站点样板中找到与在其他地方找到的匹配相关的匹配。 通常相关性排名可以很好地解决这个问题,因为常用术语对于相关性排名 ...