gpt4 book ai didi

java - 我应该使用多个 Lucene 目录/索引来搜索不同类型的数据吗?

转载 作者:行者123 更新时间:2023-11-28 23:33:08 26 4
gpt4 key购买 nike

我有很多MySQL表来存储不同类型的数据,如商品、目录、品牌、供应商等,每个表都需要通过Lucene实现全文搜索。

所以我打算为每个表建立一个Lucene Directory(和一个IndexWriter + 一个IndexReader对应这个Directory),例如

HashMap<String, Directory> = ...;
put("goods", FSDirectory.open(luceneDirRoot + "/goods"));
put("catagories", FSDirectory.open(luceneDirRoot + "/catagories"));
...

这是使用 Lucene 的好习惯吗?

更进一步,我怎么知道我用 Lucene 创建了多少个目录,就像 MySQL 命令“SHOW TABLES”? new File(luceneDirRoot).listFiles() 可以选择,但我不确定是否还有其他非Lucene文件夹。

最佳答案

如果您不需要对多个表执行搜索,我将实现一个 Lucene index pro MySQL 表。另一种方法是将所有内容写入一个索引并将表名添加到每个 lucene 文档中,这样您就可以将搜索限制在特定的表中。

AFAIK Lucene 不支持 SHOW TABLES 等同于你想要的方式,但你可以自己轻松地做到这一点,例如通过使用目录的命名约定。

我建议看看 Hibernate Search,这很符合您的需求,它构建了一个索引目录 pro 表,并允许您执行全文搜索,同时为您处理低级的 lucene 问题。您只需通过注释与您的表相对应的 JPA 实体来配置索引,并且必须实现全文查询。这比使用您自己的 MySQL 数据执行裸露的 Lucene 要容易得多,Hibernate Search 会为您构建索引并与来自关系数据库(例如 MySQL)的数据很好地集成。

关于java - 我应该使用多个 Lucene 目录/索引来搜索不同类型的数据吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36733123/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com