java - Lucene 和外部数据库

标签 java derby lucene

我正在使用 Lucene 和 Derby 数据库。 Lucene 包含文本索引,而 Derby 包含有关其他用户数据的信息。例如,每个文档都有一个标签。为此,Derby 数据库有两个表

标签:

身份证

名字

LUCENETAGS:

身份证

LUCENEID(Lucene中的docID,不是字段)

标记

我希望用户能够搜索如下内容:

very interesting text AND tag:fun

以标记为 Lucene 字段的方式更改结构不是一种选择。

谢谢!

最佳答案

我相信您只需在 Lucene 中执行文本搜索,然后根据查询结果将结果过滤到 Derby 中。

如果很少有文档匹配特定标签,您还可以查询数据库以获取要查询的 ID,然后重写查询:

(very interesting text) AND id:(1 2 3 etc.)

可能不可行,但在标签非常稀疏的情况下,可能值得考虑。

不过,我确实想知道,为什么不能将字段添加到索引,从而复制 Derby 数据库中的存储值。在您选择从声明的结构中获取所需内容的任何实现中,与数据在索引中也可用的情况相比,您会发现性能更差,处理起来更复杂。

关于java - Lucene 和外部数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14323680/

相关文章:

java - Derby INSERT SELECT 空指针异常

java - Elasticsearch:如何使产品名称在搜索中比产品描述更重要?

java - 如何编写一个 solr 查询来检索数字字段值小于指定值的所有记录?

spring-boot - Spring Boot中Apache derby的配置问题

Java建立连接数据库

java - Lucene QueryParser 与 TermQuery

java - 非静态最终变量在 Java 中有用吗?

JavaFX:绑定(bind)和弱监听器

java - Android:- 将录制的音频文件转换为 float 组

java - Cucumber 运行场景取决于不同功能文件中的另一个