我正在使用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。
答案 0 :(得分:0)
通常,将字符串解析为lucene查询的方法是QueryParsers,正如您所指出的那样。
但是,获取查询的字符串表示对于调试等非常有用。它没有提供可靠的序列化方法。无法保证它将提供甚至可由任何特定查询解析器解析的字符串,更不用说它与从中生成的查询相同。
查询是[Serializable]
,因此您可以在发送/存储之前对其进行序列化。请参阅:Object Serialization in .NET。
但有一个警告:从4.0开始,Lucene不再支持查询序列化。如果Lucene.Net达到4.0,那么可以合理地假设它也将删除对序列化的支持,并且您将继续处理更高级别的序列化。