我在MongoDb中有一组文档(url:String,title:String,content:String)。 url是一个唯一的字段,包含诸如server://aaa/bbb/1.html。
之类的内容我想用Lucene索引数据,而不是Mongo(我可以更改存储)。我要在Lucene的索引中存储网址。当用户按关键字搜索某些内容时,我将使用Lucene执行查询,读取url字段并转到Mongo以通过URL提取doc。效果很好。
但我无法通过网址从Lucene的索引中删除数据,因为它包含许多不允许的符号。我使用以下建立的url字段:
store = true
analyzed = false
indexed = true
(我应该为这个字段编制索引吗?如果我没有为这个字段编制索引怎么办?Lucene会进行全面扫描吗?集合可以包含数百万个文档)
如果我想要有良好的表现,我应该创建二级索引(Int或Long)并且不要通过url搜索?
我使用最新版本的JVM,Lucene,Ubuntu和Mongo。
答案 0 :(得分:0)
您需要在查询中对您的网址进行正确编码,它应该有所帮助。
E.g。在你的情况下, some.url / foo 应该作为 some.url%2Ffoo 在查询中传递。您可以尝试在线解码/编码 - http://www.url-encode-decode.com/
有关在Solr查询中转义字符的详细信息,请查看此处 - https://wiki.apache.org/solr/SolrQuerySyntax#NOTE:_URL_Escaping_Special_Characters