我的目标是在搜索引擎项目(如 LinkedIn)中提供一个搜索框的所有模型。
我试图用一个类比来表达我的问题。
假设每个结果都是一篇文章,并且具有多个维度,例如作者、主题、会议(如果是出版物)、托管网站等。
一些示例查询:
《作者XYZ在IEEE的信息检索论文》:三个维度{topic, conf-name, authorname}
“authoABC 设计模式的 ACM 论文”:三个维度 {conf-name, author, topic}
“javaranch 的多线程编程”:二维{主题、网站}
在从数据库中检索最终结果之前,我必须在大查询中识别这些维度和相应的关键字。
积分
- 我可以访问所有维度的所有可能值。例如,我有所有的会议名称、作者姓名等。
- 跨维度的术语几乎没有重叠。
我的方法(天真)
使用 Lucene,用一个名为“维度”的专用字段和另一个具有实际值的字段来索引每个维度中的所有关键字。前任:
1){名称:IEEE,维度:会议}等。
2) {name:ooad, dimension:topic}等
3){名称:xyz,维度:作者}等。
- 使用查询原样搜索索引。
- 在某种程度上迭代结果并识别具有新维度的第一个文档。
问题
- 不确定何时停止识别结果集中的维度。例如,查询可能只包含两个维度,但结果可能匹配 3 个维度。
- 如果我也想包括拼写检查,它会变得更复杂,结果往往不太准确。
参考论文、文章或指出描述我的问题领域的正确术语等肯定会有所帮助。
非常感谢任何指导。