2017-02-15 57 views
0

是否可以使用一些现成的搜索引擎(如Lucene,Solr或Sphinx)以及与查询最相关的搜索文档来创建大型文档的摘要?按摘要进行全文搜索

我不需要在文档内搜索或创建一个片段。只需获得最符合查询的5个文档。

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

+1

我不是那些系统的专家,但除非您提供一些关于摘要应该是什么样子的定义,那么这些系统应该如何知道在哪里寻找匹配?我要么提供一些搜索到的摘要字段,要么对整个文档进行查询。一般而言 - – Thomas

+1

- 是的,你可以应用一些技术,但我认为你的问题非常广泛,你能更具体一点吗? – Mysterion

+0

更新了问题。 –

回答

1

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

回答您更新的问题。 Lucene/Solr符合您的需求。对于“摘要”,你可以选择不通过指定存储原文:

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

通过保存“摘要”作为现场org.apache.lucene.document.TextField,总结会indexedtokenized。它将存储TD-IDF信息供您搜索。

1

基本上,如果你想有摘要功能 - 有很多方法可以做到这一点,例如TextRank,wiki上的大article,可用于NTLK的大量实现等等。但是,它不会帮助你查询,你需要在任何地方索引它。

我想你可以使用称为More Like This的功能来实现这样的功能。它存在于Lucene/Solr/Elasticsearch中。它背后的想法是,如果你发送一个查询(这是文档的原始文本),搜索引擎将找到最合适的一个,通过从中提取最相关的单词(这使我想起总结),然后将采取查看里面的倒排索引以找到最前N个相似的文档。不过,它不会丢弃文本,但它会根据TF-IDF度量标准来做“喜欢”操作符。

参考MLT在ElasticsearchLuceneSolr

1

,但只有它的 “摘要”(你可以把它叫做索引信息或TD-IDF表示)。

什么你正在寻找似乎相当标准:

  • 的Apache Lucene的[1],如果你找一个库
  • Apache Solr实现或弹性的搜索,如果你正在寻找一个 生产就绪企业搜索服务器。

Lucene搜索引擎如何工作[2]正在为您的文档中的每个字段(加上其他功能所需的一组附加数据结构)构建倒置索引。

什么显然你不想做的是商店字段的内容,这意味着采取文本内容并将其全部(压缩)存储在索引(稍后检索)。

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

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

干杯

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

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