【问题标题】:simple in memory full text search solution简单的内存全文搜索解决方案
【发布时间】:2013-01-27 02:42:19
【问题描述】:

我有一个在 Java 上运行的小型网站,其中可能包含十几个降价文件。我想为用户提供全文搜索以快速访问这些降价文件。由于它很小,我可以在每次启动 Web 应用程序时在内存中建立索引。有什么建议吗?

注意

  1. 我想远离任何数据库解决方案,sql 或 nosql。

  2. 我更喜欢将解决方案作为库提供,而不是内置到 XX 框架中

【问题讨论】:

  • 一个简单的内存缓存对你来说没问题..
  • 是的,但是在将任何内容放入内存缓存之前,我该如何构建这些文本文件的索引?

标签: java full-text-search


【解决方案1】:

使用内存数据库之一,H2 或 HSQLDB。然后,对于全文搜索部分,只需使用 Hibernate Search。它可以与两个数据库中的任何一个一起使用,并且它会让您完全不必处理 Lucene:您可以只注释您的实体,然后继续:所有的索引将自动发生,如果您想做诸如提升字段之类的事情,您可以通过一个简单的注释来做到这一点。

【讨论】:

  • 我没有数据模型,只有几个文本文件。
  • ok.. 好吧,您可以制作一个模型,其中包含一个文档字段。如果你想做富文本搜索,你最终会选择 Lucene。不直接处理它会节省你的时间。
【解决方案2】:

作为一个辅助项目,我为 java 实现了一个简单的内存文本搜索解决方案。

https://github.com/bradforj287/SimpleTextSearch

主要特点:

  • 倒排索引
  • 具有 TFIDF 排名的余弦相似度算法
  • 多线程索引创建和搜索
  • 词干提取(雪球词干分析器)
  • 自动去除 HTML 标签
  • 停用词
  • 字符串标记器(斯坦福 NLP)

可能想看看。

【讨论】:

    【解决方案3】:

    加入 Apache Lucene,全文搜索中或多或少的黄金标准。很高兴在内存中操作。

    【讨论】:

    • 是否支持索引外部文本文件?我没有要索引的任何数据库模型
    猜你喜欢
    • 2019-10-17
    • 1970-01-01
    • 2018-10-12
    • 2010-09-07
    • 1970-01-01
    • 2011-01-11
    • 2010-09-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多