Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从Lucene删除数据';是否完全按文档id进行索引?_Lucene - Fatal编程技术网

如何从Lucene删除数据';是否完全按文档id进行索引?

如何从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的索引中删除数据,因为它包含许多不

我在MongoDb中有一组文档(url:String,title:String,content:String)。url是一个唯一的字段,包含如下内容server://aaa/bbb/1.html.

我想用Lucene索引数据,而不是Mongo(我可以更改存储)。我将把url存储在Lucene的索引中。当用户通过关键字搜索某个内容时,我将使用Lucene执行查询,读取url字段,然后转到Mongo,根据url提取文档。它工作得很好

但我不能通过url从Lucene的索引中删除数据,因为它包含许多不允许的符号。我对url字段使用以下设置:

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方面有问题。什么样的异常?你可以逃脱这些魔咒