如何从Lucene删除数据';是否完全按文档id进行索引?
我在MongoDb中有一组文档(url:String,title:String,content:String)。url是一个唯一的字段,包含如下内容server://aaa/bbb/1.html. 我想用Lucene索引数据,而不是Mongo(我可以更改存储)。我将把url存储在Lucene的索引中。当用户通过关键字搜索某个内容时,我将使用Lucene执行查询,读取url字段,然后转到Mongo,根据url提取文档。它工作得很好 但我不能通过url从Lucene的索引中删除数据,因为它包含许多不允许的符号。我对url字段使用以下设置:如何从Lucene删除数据';是否完全按文档id进行索引?,lucene,Lucene,我在MongoDb中有一组文档(url:String,title:String,content:String)。url是一个唯一的字段,包含如下内容server://aaa/bbb/1.html. 我想用Lucene索引数据,而不是Mongo(我可以更改存储)。我将把url存储在Lucene的索引中。当用户通过关键字搜索某个内容时,我将使用Lucene执行查询,读取url字段,然后转到Mongo,根据url提取文档。它工作得很好 但我不能通过url从Lucene的索引中删除数据,因为它包含许多不
store = true
analyzed = false
indexed = true
(我应该索引此字段吗?如果我不索引此字段怎么办?Lucene会进行完整扫描吗?集合可以包含数百万个文档)
如果我想有好的性能,我应该创建二级索引(Int或Long)而不是按url搜索吗
我使用最新版本的JVM、Lucene、Ubuntu和Mongo。您需要在查询中正确编码URL,这应该会有所帮助 例如,在您的情况下,some.url/foo应作为some.url%2foo在查询中传递。您可以在此处尝试在线解码/编码-
有关Solr查询中转义字符的更多信息,请查看此处-您说的大量不允许的符号是什么意思?你可以在Lucene中使用特殊的分析器,使URL字段保持原样,也可以不做大的更改。所以,当你试图删除文档但它不起作用时,显示一些代码。我在Lucene周围使用clojure和包装器。但这并不重要,我可以围绕IndexWriter编写自己的实现。我感兴趣的是如何在java中实现它,然后在clojure中实现它。主要问题是我应该分析和索引url字段吗?从索引中删除文档是否正确?问题是我可以执行查询“”,但不能执行“”-尾随字符会带来异常。我认为默认解析器在URL方面有问题。什么样的异常?你可以逃脱这些魔咒