[英]How to construct a lucene search query with multiple parameters
我是 Lucene.net 的新手,在這里我想知道如何像 sql 查詢一樣進行 lucene 搜索查詢。讓我提供更多..
我有一組參數值,假設一個存儲過程有一組參數。現在我想用所有這些參數構建一個查詢。
searchParams.UseLast = Convert.ToBoolean(base.Arguments["UseLast"]);
searchParams.LastEditedFrom= Convert.ToDateTime(base.Arguments["LastEditedFrom"]);
searchParams.LastEditedTo = Convert.ToDateTime(base.Arguments["LastEditedTo"]);
searchParams.Reviewed = Convert.ToBoolean(base.Arguments["Reviewed"]);
searchParams.Approved = Convert.ToBoolean(base.Arguments["Approved"]);
searchParams.Include = Convert.ToBoolean(base.Arguments["Include"]);
searchParams.IsVisibleToUser = Convert.ToBoolean(base.Arguments["IsVisibleToUser"]);
searchParams.IsEntry = Convert.ToBoolean(base.Arguments["IsEntry"]);
searchParams.UserId = Convert.ToInt32(base.Arguments["UserId"]);
IEnumerable Categories = base.Arguments["Categories"] as IEnumerable;
IEnumerable Departments = base.Arguments["Departments"] as IEnumerable;
String mQuery = "How to construct it ....!!!" // Need help in this
var query = queryParser.Parse(mQuery);
indexSearcher.Search(query, collector);
在這里,我想從 lucene 索引中獲取所有記錄,該索引具有上述所有字段的值。
我不清楚您將searchParams
用於什么,但是通常您可以在這種情況下使用 Lucene 查詢語法的任何功能構建查詢字符串 ( mQuery
)。 這是 Lucene.Net 版本 4.8 Query Parser Syntax文檔的鏈接。
通常,當查詢中列出多個單詞時,它們會被處理為邏輯 OR,但包含所有術語的文檔匹配的排名高於僅包含一個術語的文檔。 因此,例如white dog
將匹配包含white dog
或white
或dog
文檔。 如果您只想要與所有術語匹配的文檔,則可以在語句中放入and
,例如small and white and dog
如果您只想要包含所有三個術語的文檔,則可以說small and white and dog
。
要指定要搜索的特定字段,請列出后跟冒號的字段名稱。 例如,您可以搜索UserId:ron and Categories:dogs
。 Lucene 查詢語法還有很多內容,但希望這能讓您入門。 有關更多詳細信息,請參閱我提到的 Lucene 查詢語法文檔。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.