C# solr搜索结果中的Higlight词

C# solr搜索结果中的Higlight词,c#,algorithm,search,solr,C#,Algorithm,Search,Solr,我有一个应用程序,它使用solr作为搜索引擎,并在数据网格ASP.Net站点中显示搜索结果。现在我需要在数据网格中部分或全部突出显示“搜索词” 比如说,我正在搜索“加州”,那么我需要在搜索结果网格中的任何地方突出加州这个词 如果我有一些像“CA 0012*”这样的ID,那么我需要突出显示CA,California,0012*。。以及CA 0012 我想用C#4写这个逻辑 提前感谢…:)您需要荧光灯: 以下是该文件的一些相关摘录 hl 设置为“true”启用突出显示的代码段 hl.fl 要为其生成

我有一个应用程序,它使用solr作为搜索引擎,并在数据网格ASP.Net站点中显示搜索结果。现在我需要在数据网格中部分或全部突出显示“搜索词”

比如说,我正在搜索“加州”,那么我需要在搜索结果网格中的任何地方突出加州这个词

如果我有一些像“CA 0012*”这样的ID,那么我需要突出显示CA,California,0012*。。以及CA 0012

我想用C#4写这个逻辑


提前感谢…:)

您需要荧光灯:

以下是该文件的一些相关摘录

hl

设置为“true”启用突出显示的代码段

hl.fl

要为其生成突出显示的片段的字段的逗号或空格分隔列表

hl.simple.pre/hl.simple.post

突出显示的术语前后出现的文本

默认值为“”和“



您可能需要Solr的同义词或客户端逻辑来识别
CA
California
。您还需要Solr的.Net绑定;这里经常讨论SolrNet。

我用java脚本为Telerik层次结构网格编写了类似的逻辑

首先,我将找到的记录加载到网格(搜索服务器端)

然后,我使用以下jQuery突出显示找到的行

主要的逻辑是围绕找到的文本动态创建一个跨度,并给它一个css类,通过改变背景(或任何其他你想要的东西)来突出显示它

下面是jQuery

jQuery.fn.highlight = function(pat)
{
 function innerHighlight(node, pat) 
 {
    var skip = 0;
    if (node.nodeType == 3) 
    {
      var pos = node.data.toUpperCase().indexOf(pat);
      if (pos >= 0) 
      {
        var spannode = document.createElement('span');
        spannode.className = 'highlight';
        var middlebit = node.splitText(pos);
        var endbit = middlebit.splitText(pat.length);
        var middleclone = middlebit.cloneNode(true);
        spannode.appendChild(middleclone);
        middlebit.parentNode.replaceChild(spannode, middlebit);
        skip = 1;
     }
  }
  else if (node.nodeType == 1 && node.childNodes && !/(script|style)    /i.test(node.tagName)) {
   for (var i = 0; i < node.childNodes.length; ++i) {
    i += innerHighlight(node.childNodes[i], pat);
   }
  }
  return skip;
 }
 return this.each(function() 
 {
  innerHighlight(this, pat.toUpperCase());
 });
};

当然,您必须自己编写一些逻辑才能让CA代替加利福尼亚。

设置
hl.fragsize=0
也可能是一个好主意,以便返回整个值-这样您可以使用突出显示的值代替原始值。请参阅-了解如何使用SolrNet cleint突出显示的详细信息。SolrNet客户端附带的SampleApp还显示了使用高亮显示的示例。
allrows = $.map("tr.rbi:contains('California')")