使用DocValues作为整数的java排序索引?
我使用Lucene实现文本字段的自动完成机制,支持多种语言和多组选项。每组大约有2k到5k个不同的值
目前,我手工查询所有点击,并根据整数值进行排序。因为这效率很低,所以我需要使用doc值创建一个索引。我理解这个理论,但我找不到一个好的代码片段来实现它。我带来了两本书,读了两本,要么没有,要么覆盖得很差(一小段代码)
我的目标是为每个文档索引一个整数值,并按降序排序
另外,我想问一下,我是否错过了市长的文件来源?Lucene文档既不全面,也不易访问。我曾经在实际中使用Lucene,但这本书已经有十年的历史了,Lucene最近的变化在API方面非常引人注目
例如:
- {姓名:“A1”,编号:1000}
- {姓名:“A2”,号码:1001}
- {姓名:“A3”,号码:990}
- {姓名:“B1”,编号:300}
=查询:A*+按数字排序+top2=>;A3,A1
小结:我目前正在获取所有文档,并在代码中进行排序和修剪(限制),我希望Lucene这样做
该实现使用Java。由于我只使用了一小部分信息,但使用了多种语言,所以我使用RAMDirectory创建了一个索引(是的,我知道它已被弃用,但它可以工作),并使用标准分析器将每个文档添加到一个标准索引编写器中
就我理解需求而言,我需要定义并使用存储在列中的字段,以便使用Lucene进行排序。我试了好几个小时,只是放弃了获取所有信息,并在内存中查找数据和排序+修剪。它确实做到了,但并不令人满意
因此,它所需要的只是在索引中添加一个整数字段,以便在lucene中进行排序
# 1 楼答案
使用^{} 将字段添加到文档中
在搜索查询中使用同名的^{} :
参见相关问题: How to sort Numeric field in Lucene 6
我刚在谷歌上搜索了你的用例