我使用的是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,可以合理地假设它也将取消对序列化的支持,而您将只能在更高的级别上处理序列化。