2014-10-03 35 views
0

我正在使用Lucene.Net版本3.0.3如何從字符串解析Lucene查詢?

這裏是Lucene查詢轉換爲字符串與字段的鍵值和容差。

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

我想字符串值傳遞給,我需要回到Lucene的查詢轉換的API。

我試着QueryParser和MultifieldQueryparser與字段的名字和姓氏,但沒有返回確切的查詢,因爲我通過。

回答

0

通常,將字符串解析爲lucene查詢的方法是QueryParsers,如您所示。

但是,獲取查詢的字符串表示對於調試等非常有用。它不提供可靠的序列化方法。不能保證它會提供一個字符串,甚至可以被任何特定的查詢解析器解析,更不用說它將與它生成的查詢相同。

雖然查詢是[Serializable],所以您可以在發送/存儲它之前序列化它。參見:Object Serialization in .NET

雖然有一個警告:從4.0開始,Lucene不再支持查詢序列化。如果當Lucene.Net達到4.0時,可以合理地假設它也會取消對序列化的支持,並且您將被留在更高級別處理序列化。