如何从字符串中解析Lucene Query



我使用的是Lucene.Net 3.0.3版

这里是Lucene Query转换为字符串的字段关键字、值和容差。

+(() (((((FirstNames:John~0.8)^0.7)) (((LastNames:Smith~0.8)^0.8)) ())~2)) +(() (*:*))

我想把字符串值传递给Api,在那里我需要转换回Lucene Query。

我尝试了使用字段FirstName和LastName的QueryParser和MultifieldQueryparser,但在传递时没有返回确切的Query。

通常,将字符串解析为lucene查询的方法是QueryParsers,正如您所指出的。

但是,获取查询的字符串表示形式对于调试等非常有用。它不提供可靠的序列化方法。不能保证它会提供一个字符串,甚至可以被任何特定的查询解析器解析,更不用说它会与生成它的查询相同。

不过,查询是[Serializable],所以您可以在发送/存储它之前对它进行序列化。请参阅:.NET.中的对象序列化

不过有一个警告:从4.0开始,Lucene不再支持查询序列化。如果Lucene.Net达到4.0,可以合理地假设它也将取消对序列化的支持,而您将只能在更高的级别上处理序列化。

最新更新