wildcardquery即通配符查詢,即使用通配符來模糊查詢,常見的通配符有?,*,-等等,通配符不知道怎麼使用的自己google學習下吧。照例還是先閱讀官方的api文檔:
特别要注意的note後面的話,提醒我們注意,wildcardquery查詢是很慢的,因為它需要周遊很多的term,為了避免極慢的查詢速度,請不要使用以星号開頭的通配符進行查詢。
除了官方給的那點提醒以外,我也要提醒大家一點,wildcardquery對于使用者輸入的查詢關鍵字是大小寫敏感的,請不要使用大寫形式,因為索引中的term都是小寫形式的,這個大家都知道的,特此提醒。
wildcardquery構造函數除了需要一個term對象以外,還有一個參數需要設定maxdeterminizedstates,源碼注釋裡是這樣解釋的:
/**
* constructs a query for terms matching <code>term</code>.
* @param maxdeterminizedstates maximum number of states in the resulting
* automata. if the automata would need more than this many states
* toocomplexttodeterminizeexception is thrown. higher number require more
* space but can process more complex automata.
*/
public wildcardquery(term term, int maxdeterminizedstates) {
super(term, toautomaton(term), maxdeterminizedstates);
}
其實就是設定根據通配符支援最大能支援有多少term情況,term越多占的硬碟空間越大,但查詢也更精确。這個值預設源碼裡給定的是10000,預設即可。
其他也沒什麼好說的,wildcardquery使用難度也不大,照樣貼一個使用示例吧:
string directorypath = "d:/lucenedir";
string fieldname = "contents";
string querystring = "*recursive*";
query query = new wildcardquery(new term(fieldname,querystring));
示例代碼的意圖就是查詢索引文檔中包含recursive這個單詞的,ok,打完收工了,此時此刻2015-03-24 22:26,該睡覺了。預計接下來要說說的就是spanquery了。
如果你還有什麼問題請加我Q-q:7-3-6-0-3-1-3-0-5,
或者加裙
一起交流學習!
轉載:http://iamyida.iteye.com/blog/2195249