您的问题出在分析仪中。
SimpleAnalyzer将标记定义为 字母的
最大字符串(
StandardAnalyzer或什至
WhitespaceAnalyzer是更典型的选择),因此要索引的值将分为多个标记:“ b”,“
a”,“ b”,“ d”,“
f”。您定义的delete方法虽然不会通过分析器,但只会创建一个原始术语。如果您尝试将其替换为以下内容,则可以看到它的作用
main:
generateIndex("5836962b0293a47b09d345f1");query("5836962b0293a47b09d345f1");delete("b");query("5836962b0293a47b09d345f1");
通常,查询和术语等 不 进行分析,而QueryParser进行分析。
对于(看起来像)标识符字段,您可能根本不想分析此字段。在这种情况下,请将其添加到FieldType中:
fieldType.setTokenized(false);
然后,您将不得不更改查询(再次进行QueryParser分析),并
TermQuery改为使用。
Query query = new TermQuery(new Term("_id", id));
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)