string q = "m";
Query query = new QueryParser("company", new StandardAnalyzer()).Parse(q+"*");
将导致查询成为 prefixQuery :company:a*
我仍然会得到像“非洲舰队”这样的结果,很明显 A 不是在开始,因此给了我不想要的结果。
Query query = new TermQuery(new Term("company", q+"*"));
将导致查询成为 termQuery :company:a* 并且不返回任何结果。可能是因为它将查询解释为完全匹配,而我的值都不是“a*”文字。
Query query = new WildcardQuery(new Term("company", q+"*"));
将返回与前缀查询相同的结果;
我究竟做错了什么?