如何在sql-server数据库表上构建自由流搜索?

Lok*_*wal 5 java sql-server lucene elasticsearch

我正在创建一个类似于quora/stackoverflow的Web应用程序,允许用户在问题库上执行CRUD操作(问题库非常小,每个问题最多5个答案约500个问题)以及搜索.如何在问题库上建立自由流量搜索或自动建议功能?

技术堆栈:

  1. CRUD操作的Restful服务是通过托管在tomcat上的基于Java EE(spring boot)的服务器公开的.
  2. 前端应用程序使用React构建,并从Node服务器提供.
  3. 使用的数据库是SQL Server.

问题银行架构:

questionId: String

tags: [String]

title: String

description: String

answernotes: [String]

applicableJobRole: [Intern, Full Time]

state: [Approved, UnderReview, Obsolete]

difficultyLevel: [Easy, Medium, Hard]

noOfTimesUsed: int

createdBy: user
Run Code Online (Sandbox Code Playgroud)

需求:

对于我的Web应用程序,我想在问题库上构建自由流量搜索或自动建议功能(在问题库中搜索现有问题,如描述,标题,答案备注等).这是为了防止在问题库中创建重复的问题,并帮助用户搜索类似的问题.

对于前者 类似于下图的内容(从Quora剪掉).

问题:

  1. 弹性搜索是否适合索引或为这么小的数据集构建搜索功能?要么,
  2. 我应该在应用服务器本身使用自己创建的数据结构(如后缀树)构建索引吗?

是否有其他一些快速使用推荐的解决方案来构建这种用例的自由流搜索功能?

这里的潜在客户/指针表示赞赏.

从Quora搜索

mic*_*mia 5

我应该在应用服务器本身使用自己创建的数据结构(如后缀树)构建索引吗?

请不要!这将花费很长时间,并且可能极易出错.在应用程序服务器本身中管理索引可能是一个可行的解决方案,但使用库肯定会对您有所帮助.

虽然Elasticsearch是一种可能性,但可以使用简单的Lucene索引轻松管理这些数据量.此决策还取决于您要为系统确保的冗余.如果您对每次服务器关闭时无法访问某项服务感到不满意,则应查看Lucene的索引复制功能或使用冗余Elasticsearch安装.