【问题标题】:How to store document vectors in a database for a search engine?如何将文档向量存储在搜索引擎的数据库中?
【发布时间】:2012-07-25 04:14:55
【问题描述】:

我已经用 Java 实现了一个搜索引擎。它有一个存储倒排索引的数据库,即从术语到该术语出现的文档列表的映射。有一个功能允许用户上传文档,该文档可以添加到文档中以进行索引。我面临的问题是,每次添加新文档时,索引都会在内存中重建而不是更新。要更新,我需要一个存储文档向量的数据库,这些文档向量本质上是索引中每个术语的 tf-idf(词频 * 逆文档频率)。我无法为它计算出数据库结构,因为存储这样的结构需要哪些行和列或多个表。

我需要存储

1. Document ID 
2. Document Title
3. N dimensional Document vector where N is the number of unique terms
4. N terms 
5. IDF of each term
6. TF of each term for every document.

我需要它以便在查询匹配时提取该向量并计算其与查询向量的相似度。如果您需要任何其他信息,请告诉我。 非常感谢,我相信我会在这里得到一些帮助。

【问题讨论】:

  • 您找到答案了吗?您最终是如何存储文档向量的?

标签: database search-engine information-retrieval


【解决方案1】:

您确定要使用数据库来实现搜索引擎吗?

您可以看看这个 Java 框架,它做得非常好,而且非常简单易学。

Lucene Tutorial in 5 mins

它使用向量空间模型,您无需担心您在帖子中提到的所有上述字段,因为 Lucene 将它们与更高级的排名因素一起存储。

很抱歉,如果您有意使用数据库,我的回复对您没有帮助。

【讨论】:

  • 您好,谢谢您的回复!其实我是故意不使用lucene,因为我想做一个搜索引擎。好吧,事实上,虽然我已经决定了数据库表和结构,但我没有太多运气,因为它必须通过读取数据库再次形成向量(而且这样做需要很长时间)新文件已上传。 :\
猜你喜欢
  • 2012-01-31
  • 2017-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-06
  • 1970-01-01
  • 2011-07-02
  • 2012-07-21
相关资源
最近更新 更多