如何从字符串解析Lucene Query?

时间:2014-10-03 18:51:41

标签: .net lucene lucene.net

我正在使用Lucene .Net Version 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。

1 个答案:

答案 0 :(得分:0)

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

但是,获取查询的字符串表示对于调试等非常有用。它没有提供可靠的序列化方法。无法保证它将提供甚至可由任何特定查询解析器解析的字符串,更不用说它与从中生成的查询相同。

查询是[Serializable],因此您可以在发送/存储之前对其进行序列化。请参阅:Object Serialization in .NET

但有一个警告:从4.0开始,Lucene不再支持查询序列化。如果Lucene.Net达到4.0,那么可以合理地假设它也将删除对序列化的支持,并且您将继续处理更高级别的序列化。