当前位置: 首页 > 知识库问答 >
问题:

用于连接令牌的Solr自定义筛选器

杜弘光
2023-03-14

我需要为solr分析器阶段编写一个自定义过滤器。这个想法是首先用空格标记输入的业务名称,然后应用一组过滤器来进行小写、模式替换和删除停止词。在这些筛选之后,我希望将所有令牌合并(串联)到一个令牌中,然后应用NGramFilterFactory从令牌生成n个Grams。

我想要组合所有的令牌(最初从业务名称生成)的原因是,我不会错过solr中索引的令牌(在NGramFilter中长度小于N),而且用户在输入业务名称时可能没有插入适当的空格。请让我知道更多的澄清。

我试图为相同的自定义过滤器编写一个,但这是不正常的工作,我能够理解它的行为。

当我查询名称“Apple”时,它会返回n1个结果。

当我查询名称“computers”时,它返回n2个结果。

java prettyprint-override">public class ConcatFilter extends TokenFilter {

private CharTermAttribute charTermAtt;
private StringBuilder builder = new StringBuilder();

public ConcatFilter(TokenStream input)
{
    super(input);
    charTermAtt = addAttribute(CharTermAttribute.class);
}

@Override
public boolean incrementToken()  throws IOException  {

    if(input.incrementToken()) {
        int len = charTermAtt.length();
        char buffer[] = charTermAtt.buffer();
        builder.append(buffer, 0, len);
        char[] newBuffer = builder.toString().toCharArray();
        int newLength = builder.length();
        charTermAtt.setEmpty();
        charTermAtt.copyBuffer(newBuffer, 0, newLength);
        charTermAtt.setLength(newLength);
        return true;
    } else {
        builder.delete(0, builder.length());
        return false;
        }
    }
}

共有1个答案

王高超
2023-03-14

我已经编写了连接单词过滤器,并将补丁提交到solr社区。任何面临同样问题的人都可以在这里找到它:ConcatenateWordsFilter

 类似资料:
  • 我有一个ADFS 4.0 OpenId连接设置,应用程序组为“Web浏览器访问Web应用程序”。我使用隐式流,能够从我的web应用程序成功登录,接收id_令牌并访问_令牌。 接下来,我在从wep应用程序发送到应用编程接口服务器的请求中使用访问令牌。我想做的是自定义访问令牌格式——添加额外的参数,因为默认情况下我只有: aud、iss、iat、exp、apptype、appid、Authmethod

  • 我已经阅读了这个问题的公认答案,并创建了一个自定义令牌、过滤器和身份验证提供程序。 问题: 当我尝试“获取/登录”时: null 最后,安全配置:

  • 存储在Django模型中的元素如下 示例数据如下: . 结果:找到对象- 结果:找到对象- 结果:找到对象- 结果:未找到对象 如何使用过滤器和正则表达式进行这些查询?

  • 下面是过滤器的外观。 对于WebSecurityConfigurerAdapter#configure(webSecurityWeb)web.忽略()中包含的路径,我希望该筛选器不会像Spring Security筛选器链的其余部分一样激发。 下面是它的样子 我希望在调用Spring Security链的其余部分时调用这个过滤器,并对web.igneration()中的路径忽略这个过滤器,就像Sp

  • 我创建了一个自定义筛选器,用于获取令牌,然后用与令牌相关的角色填充身份验证对象 然后,我将该过滤器添加到springsecuritycontext中,如下所示: 应用程序已经存在,我只是尝试添加Spring Security层。Spring Security版本为4.2.3。在尝试实现此功能的几天后,不会加载,因此不会筛选任何请求。请帮帮忙。