【问题标题】:Change Indexing(Postings)Structure of Lucene [closed]更改索引(帖子)Lucene的结构[关闭]
【发布时间】:2017-11-10 16:54:17
【问题描述】:

我正在研究索引文档的新方法。具体来说,我想 改变现有的索引结构以试验索引技术。例如,如果 Lucene 具有在索引时保存术语和 Doc Id 的倒排索引,我想扩展该结构以保存其他信息,例如关于术语的位置或统计信息。我将如何进行此类扩展?有没有比 Lucene 更好的开源项目来做这样的扩展?谢谢。

【问题讨论】:

    标签: solr lucene information-retrieval inverted-index


    【解决方案1】:

    例如,如果 Lucene 具有在索引时保存术语和 Doc Id 的倒排索引,我想扩展该结构以保存其他信息,例如关于术语的位置或统计信息...

    Lucene 中的每个帖子条目都非常通用。 Lucene 已经提供了以字节流的形式保存泛型类型(对象)的规定,这要借助与每个发布条目关联的 payload 对象。

    有效载荷的一个非常常见的用途是存储术语位置。例如,对于一个术语 t,如果它出现在文档 D1 的位置 1 和 3,以及 D2 的位置 2 和 5,您可以将这些作为不同的条目保存在 的帖子中t,如下图。

    *t* => (D1,1) (D1,3) (D2, 2) (D2, 5)
    

    最简单的方法是使用 Lucene 类 DelimitedPayloadTokenFilter。在分析文本时,您需要做的就是在每个术语旁边写出术语位置,由特定字符分隔,例如'|',如下例所示。

    class PayloadAnalyzer extends Analyzer {
    private PayloadEncoder encoder;
    
    PayloadAnalyzer(PayloadEncoder encoder) {
      this.encoder = encoder;
    }
    
    public TokenStream tokenStream(String fieldName, Reader reader) {
      TokenStream result = new WhitespaceTokenizer(reader);
      result = new LowerCaseFilter(result);
      result = new DelimitedPayloadTokenFilter(result, '|', encoder);
      return result;
    }
    }
    

    要解码存储在有效负载中的值,您可以使用以下内容。

    class PayloadSimilarity extends DefaultSimilarity {
        @Override
        public float scorePayload(String fieldName, byte[] bytes, int offset, int length) {
          return PayloadHelper.decodeFloat(bytes, offset);
        }
    }
    

    然后您可以使用PayloadTermQuery 类在文档排名期间利用这些术语偏移量。

    大声思考,我认为对您来说一个很好的练习是存储其他术语特定信息,可能是 -i)术语的词性(POS)标签,ii)术语的词向量等,在有效载荷并在排名期间使用所有这些功能的组合。

    【讨论】:

      【解决方案2】:

      Lucene 是一个很好的目标,是的(说实话,不确定是否有更好的选择)。

      我猜你最终会创建你的自定义编解码器。请参阅this blog post,来自现代 Lucene 中当前编解码器背后的主要人物。他在那里提到了有用的SimpleTextCodec,它可以让您理解和使用编解码器。当然,不用于生产用途。

      【讨论】:

        猜你喜欢
        • 2021-05-27
        • 1970-01-01
        • 1970-01-01
        • 2013-08-12
        • 1970-01-01
        • 2016-02-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多