string q = "m";
Query query = new QueryParser("company", new StandardAnalyzer()).Parse(q+"*");
將導致查詢是一個prefixQuery:公司:A *爲什麼這個Lucene查詢「contains」而不是「startsWith」?
我仍然會得到結果,如「艦隊非洲」它是相當明顯的是,A是不是在一開始,因此給了我意外的結果。
Query query = new TermQuery(new Term("company", q+"*"));
將導致查詢爲termQuery:company:a *且不返回任何結果。可能是因爲它將查詢解釋爲完全匹配,並且我的值都不是「a *」字面值。
Query query = new WildcardQuery(new Term("company", q+"*"));
將返回與前綴查詢相同的結果;
我在做什麼錯?
這個例子當然太過分了吧?難道不可能在沒有所有模糊的情況下創建一個類似於startwith的查詢嗎? – 2009-03-03 11:11:01