【问题标题】:Full text search by summaries按摘要进行全文搜索
【发布时间】:2017-07-04 10:18:46
【问题描述】:

是否可以使用一些开箱即用的搜索引擎(如 Lucene、Solr 或 Sphinx)创建大型文档的摘要,并搜索与查询最相关的文档?

我不需要在文档中搜索或创建 sn-p。只需获取与查询最匹配的 5 个文档。

更新。 更具体地说,我不希望引擎保留整个文档,而只是“摘要”(您可以将其称为 索引信息 或 TD- IDF 表示)。

【问题讨论】:

  • 我不是这些系统的专家,但除非您提供一些摘要应该是什么样子的定义,否则这些系统应该如何知道在哪里寻找匹配项?我要么提供一些搜索的摘要字段,要么对整个文档进行查询。
  • 一般 - 是的,你可以应用一些技术,但我认为你的问题非常广泛,你能更具体一点吗?
  • 更新了问题。
  • 大多数这样的引擎将使用倒排索引。众所周知,Sphinx 无论如何都会这样做。它创建这个特殊的索引(这是一种术语频率),并且(默认情况下)不存储原始文本。可以通过停用词排除流行词(想想“the”)来大幅减少索引的大小。否则你的陈述“不需要在里面搜索”和“最佳匹配查询”似乎是矛盾的,如何找到最佳匹配,而不搜索文档文本??

标签: java solr lucene full-text-search sphinx


【解决方案1】:

更新。更具体地说,我不希望引擎保留整个 文档,但只是它的“摘要”(您可以将其称为索引信息 或 TD-IDF 表示)。

回答您更新的问题。 Lucene/Solr 满足您的需求。对于“摘要”,您可以选择不存储原始文本,方法是指定:

 org.apache.lucene.document.Field.Store.NO

通过将“摘要”保存为字段org.apache.lucene.document.TextField,摘要将为indexedtokenized。它将存储 TD-IDF 信息供您搜索。

【讨论】:

    【解决方案2】:

    但只是“摘要”(您可以将其称为索引信息或 TD-IDF 表示)。

    您正在寻找的似乎很标准:

    • Apache Lucene [1],如果您正在寻找库
    • Apache Solr 或 Elastic Search,如果您正在寻找 生产就绪的企业搜索服务器。

    Lucene 搜索引擎的工作原理 [2] 是为文档中的每个字段构建一个倒排索引(以及其他功能所需的一组附加数据结构)。

    显然您不想做的是存储字段的内容,这意味着获取文本内容并将其完整(压缩)存储在索引中(稍后检索) .

    在 Lucene 和 Solr 中,这是配置问题。

    总结是一个完全不同的 NLP 任务,可能不是你需要的。

    干杯

    [1]http://lucene.apache.org/index.html

    [2]https://sease.io/2015/07/26/exploring-solr-internals-the-lucene-inverted-index/

    【讨论】:

      【解决方案3】:

      基本上,如果您想拥有摘要功能 - 有很多方法可以做到这一点,例如 TextRank、wiki 上的大 articleNTLK 中提供的大量实现等等。但是,它不会帮助您进行查询,无论如何您都需要在某个地方对其进行索引。

      我认为您可以使用称为 More Like This 的功能来实现类似的目标。它存在于 Lucene/Solr/Elasticsearch 中。它背后的想法是,如果您发送查询(这是文档的原始文本),搜索引擎将通过从中提取最相关的词(这让我想起摘要)来找到最合适的查询,然后将查看倒排索引以查找前 N 个相似文档。不过,它不会丢弃文本,但会根据 TF-IDF 指标执行“点赞”运算符。

      ElasticsearchLuceneSolr 中对 MLT 的引用

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-07-29
        • 1970-01-01
        • 2023-03-02
        • 2010-11-11
        • 2010-11-25
        • 2017-06-04
        • 2013-04-23
        • 2014-06-05
        相关资源
        最近更新 更多