string q = "m";
Query query = new QueryParser("company", new StandardAnalyzer()).Parse(q+"*");
はprefixQueryされたクエリになります:会社:*なぜこの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と同じ結果を返します。
私は間違っていますか?
確かにこの例はあまりにも遠すぎます。すべてのファズがなくてもstartswithのようなクエリを作成することは可能でしょうか? –
私が知っているわけではありません。 startswithは微妙です。あなたがこれを行うことができれば、私に知らせてください。私が見ていることから、PrefixQueryは、最初のものだけでなく、どんな用語の開始を探すことを意味します。 –
これは私を実際に驚かせます。 Startswithは、実行するのが最も簡単なクエリでなければなりません。 –