【问题标题】:Access indexed tokens in Solr filter class访问 Solr 过滤器类中的索引标记
【发布时间】:2013-10-05 09:35:17
【问题描述】:

我想访问自定义 Solr 过滤器类中的索引标记。该类是来自schema.xml 的常规过滤器,带有<filter /> 标记。这可能吗?

一点背景:当有查询进来时,我想用其他标记替换一些查询标记,但前提是它们在该字段的索引中。例如,想象一下,我将用索引中以查询标记开头的所有标记替换查询标记,有点像通配符搜索。当查询“text:te”时,实际查询可能是“text:test | text:tent | text:temple”,如果“test”、“tent”和“temple”在字段“text”的索引中。

我查看了 API(TokenFilterTokenStreamAttributeSource),但找不到任何访问索引的方法。我什至找不到有关当前正在处理哪个字段的信息,但我知道这在概念上可能没有意义。

那么,有没有办法访问索引?我猜我最终需要的是org.apache.lucene.index.Terms 的实例。

【问题讨论】:

    标签: solr filter lucene indexing token


    【解决方案1】:

    您所描述的是 PrefixQuery 已经通过 rewrite 方法所做的(以及一般的 MultiTermQuerys)。是不是有什么理由不充分。

    您是否出于某种原因不想使用 Lucene 提供的查询,例如 PrefixQueryWildcardQuery

    【讨论】:

    • 我使用EDismax。为了获得PrefixQuery,我必须制定像test* 这样的搜索查询,对吧?我想让我的用户不必手动执行此操作,具体取决于前缀搜索应该自动发生的上下文。
    • 我不相信存在任何根据上下文自动执行前缀查询的 edismax 功能。我建议在您的实现中适当时将* 添加到用户查询的末尾。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多