string q = "m";
Query query = new QueryParser("company", new StandardAnalyzer()).Parse(q+"*");
쿼리 발생하는 prefixQuery되는 : 기업 : A * 따라서왜이 Lucene 쿼리는 "startsWith"대신 "contains"입니까?
여전히 나는 A가 시작되지 않습니다 오히려 분명하다 "함대 아프리카"와 같은 결과를 얻을 수및 것은 나에게 바람직하지 않은 결과를 제공합니다 .
Query query = new TermQuery(new Term("company", q+"*"));
결과 검색어는 termQuery : company : a *가되고 결과는 반환되지 않습니다. 아마도 그것은 쿼리를 정확한 일치로 해석하고 내 값 중 어느 것도 "a *"리터럴이 아니기 때문일 수 있습니다.
Query query = new WildcardQuery(new Term("company", q+"*"));
는 prefixquery와 동일한 결과를 반환합니다.
내가 뭘 잘못하고 있니?
분명히 예가 너무 멀리 있습니다. 맞습니까? 모든 fuzz없이 쿼리와 같은 startswith를 만드는 것이 가능하지 않습니까? –
내가 아는 것은 아닙니다. startswith는 까다 롭습니다. 이 작업을 수행 할 수 있다면 알려 주시기 바랍니다. 내가보기에, PrefixQuery는 단지 첫 번째가 아니라 모든 용어의 시작을 찾는 것을 의미합니다. –
사실 놀랍게도. Startswith가 가장 쉬운 쿼리 여야합니다. –