如何在使用 solr 保留顺序的同时执行部分搜索?

How do I perform a partial search while preserving order using solr?

使用 Solr 4.0,我有一个 TextField 类型的字段 Title_t(用于存储书名)。假设这些是存储在我的数据库中的以下标题:

如果要搜索标题 "Physics Guide",则可以使用 Title_t:physics 克* 这显示了所有结果

现在,我的问题是:

为什么过滤器不只显示 "Physics Guide" 结果? 由于搜索条件是 "physics G*" 而不是“*physics G *”,因此应该只显示一个结果。有没有办法保持搜索关键字的顺序?

解析后你的查询 Title_t:physics G* 会变成

Title_t:physics df:G*

这里的df是默认字段(通常是文本,检查你的配置文件)。 和默认运算符将或。所以它 returns 文档 Title_t 有术语 'physics' 和任何字段的文档复制了默认字段,单词以 G 开头。

尝试使用 ComplexPhraseQueryParser

q={!complexphrase inOrder=true}Title_t:"physics G*"