gpt4 book ai didi

java - 使用 SortedSetDocValuesField 对多个字段进行排序 - 错误 : unexpected docvalues type SORTED_SET for field

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

我刚刚使用 Lucene 5.5.0 实现对 JSF Web 应用程序的搜索。在应用程序中,多个用户可以编辑文档,并且将创建非常简单(仅日期和用户名)的编辑日志。示例:

2017-02-10 user15
2017-02-01 user14
2017-01-15 user15

现在我想要一个搜索功能,用户可以在其中查找自己的编辑内容 - 按编辑日期排序。正在寻找,但我在排序时遇到问题。请注意,每个文档中都有多个编辑条目。

我的索引编写java代码:

doc.add(new StoredField(fieldName, fieldValue));
doc.add(new SortedSetDocValuesField(fieldName, new BytesRef(fieldValue)));

我的排序代码:

Sort sort = new Sort(new SortField("UserID", SortField.Type.STRING));
docs = searcher.search(finalQuery, hitsPerPage, sort);

索引正在工作,但如果我正在搜索某些内容,则会收到以下错误消息:

unexpected docvalues type SORTED_SET for field 'UserID' (expected=SORTED).
Use UninvertingReader or index with docvalues.

错误消息说我应该使用 docvalues - 但我已经使用 SortedSetDocValuesField 执行此操作。您面临的实际问题是如何消除此错误消息。

我的代码是based on this answer ,但我将 SortedDocValuesField 更改为 SortedSETDocValuesField。否则,在创建索引时,我会收到错误 DocValuesField "UserID"在此文档中出现多次(每个字段只允许有一个值)

那么,我是否必须为 SortedSETDocValuesField 设置特殊设置?我还看了this question ,但它对我来说没有用,因为我使用的是字符串(想按字母顺序排序)而不是 double 。预先非常感谢您:) .

对于这个问题来说并不重要,但对于理解我的搜索如何在该领域发挥作用:

在“UserID”字段中,我存储一个字符串“2017-02-10===user15”,我用自定义分析器(仅用于索引)将其拆分为 token “2017-02-10”并“用户15”。然后我将这些字符串添加到每个文档中。搜索时,结果(结果的确定已经起作用)应按降序排序(最高/最新日期在前)。

最佳答案

是的,您需要使用 SortedSetSortField ,而不是标准的 SortField

关于java - 使用 SortedSetDocValuesField 对多个字段进行排序 - 错误 : unexpected docvalues type SORTED_SET for field,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42347117/

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