我是新手,刚开始使用lucene。我有一个小问题。我需要知道如何重写lucene查询。我在(SO)中读到了一篇建议使用的文章 Query.rewrite(查询重写器将更高级别的查询子句转换为性能更好的低级子句。)。但为此,它需要一个我不想使用的索引编写器类型的对象。
任何其他实施方式的建议。
非常感谢提前
问候
答案 0 :(得分:1)
需要IndexReader
,是的。如果没有IndexReader,您不能将任意查询重写为原始查询,因为重写的表单取决于索引中的术语。例如,PrefixQuery
将被重写为一组TermQueries
,基于索引中的条款与给定前缀匹配。阅读这些条款需要IndexReader
。由于无法读取索引的当前状态,因此MultiTermQueries
通常无法重写。