无法使用lucene IndexWriter.deleteDocuments(term)删除文档

无法使用lucene IndexWriter.deleteDocuments(term)删除文档,第1张

无法使用lucene IndexWriter.deleteDocuments(term)删除文档

您的问题出在分析仪中。

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));


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5056166.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-16
下一篇 2022-11-15

发表评论

登录后才能评论

评论列表(0条)

保存