gpt4 book ai didi

java - lucene中生成倒排索引是否需要保存字段本身

转载 作者:行者123 更新时间:2023-11-30 06:43:13 25 4
gpt4 key购买 nike

我在 lucene 中保存字段 id 和 msg 以支持全文搜索。当用户输入关键字时,lucene 执行搜索并显示结果,当用户使用保存的 ID 单击该搜索时,我打开从数据库获取结果,并显示更多详细信息。

lucene 是否可以只保存 msg 字段上的倒排索引而不是整个 msg 字段,并只将 ids 交给我,以便我可以从数据库中获取结果来显示结果?

通过这样做,我的数据将不再是多余的。

最佳答案

在 Lucene 中,出于文档创建/获取目的而存储的内容(通过 DB 描述的目的)和出于搜索目的而索引为倒排索引的内容是两个截然不同的事物。

您没有显示任何索引代码。

在 Lucene 中存储数据是可选的,人们也选择存储数据以避免以存储空间为代价的额外数据库调用等,但将数据保留在主源中也会减少同步要求。因此需要权衡。

在下面的代码片段中,DOC_ID 也被索引和存储,而 TEXT_FIELD 只是被索引而不被存储。

Document doc = new Document();
doc.add(new Field("DOC_ID", "DOCONE", new FieldType(
TextField.TYPE_STORED)));
doc.add(new Field("TEXT_FIELD", "This", new FieldType(
TextField.TYPE_NOT_STORED)));
writer.addDocument(doc);

因此,搜索后,假设您的命中文档是 - hitDoc,那么您将看到以下内容,hitDoc.getField("DOC_ID")="DOCONE"hitDoc.getField("TEXT_FIELD")=NULL

两个字段都已建立索引,但仅存储一个字段。索引意味着可以搜索。

关于java - lucene中生成倒排索引是否需要保存字段本身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44062922/

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