string q = "m";
Query query = new QueryParser("company", new StandardAnalyzer()).Parse(q+"*");
sẽ cho kết quả truy vấn là một prefixQuery: Công ty: a *Tại sao truy vấn Lucene này là "chứa" thay vì "startsWith"?
Tôi vẫn sẽ có được kết quả như "Hạm đội châu Phi", nơi nó là khá rõ ràng rằng A không phải là lúc bắt đầu và do đó mang lại cho tôi kết quả không mong muốn .
Query query = new TermQuery(new Term("company", q+"*"));
sẽ dẫn đến truy vấn là một thuật ngữQuery: company: a * và không trả lại bất kỳ kết quả nào. Có lẽ vì nó diễn giải truy vấn dưới dạng đối sánh chính xác và không có giá trị nào của tôi là chữ "a *".
Query query = new WildcardQuery(new Term("company", q+"*"));
sẽ trả lại kết quả tương tự như tiền tố;
Tôi đang làm gì sai?
Chắc chắn ví dụ quá xa, phải không? Không phải là nó có thể tạo ra một startwith như truy vấn mà không có tất cả các fuzz? –
Không phải là tôi biết. startswith là khó khăn. Nếu bạn quản lý để làm điều này, xin vui lòng cho tôi biết. Từ những gì tôi thấy, PrefixQuery có nghĩa là tìm kiếm sự bắt đầu của bất kỳ thuật ngữ nào, không chỉ là từ đầu tiên. –
Điều này làm tôi ngạc nhiên. Startswith phải là truy vấn dễ dàng nhất để làm, phải không? –