0

我正在使用 Solrj 来索引 Solr 中的文档,其中一个字段是 url。在创建 solr 文档并随后将其传递给 SolrServer 时,我没有进行任何显式解码,以保持 url 的原始格式。但是,一旦它被编入索引,网址就会被解码。

这是一个包含撇号的测试示例。


http://test.com/test/Help/What%e2%80%99s_N1

在 solr 索引中,它被解码为


http://test.com/test/Help/What's_N1

这是一个示例代码:


SolrServer solrServer = new StreamingUpdateSolrServer(solrPostUrl, solrQueueSize, solrThreads);
SolrInputDocument solrDoc = new SolrInputDocument();
solrDoc.addField("url", "http://test.com/test/Help/What%e2%80%99s_N1");
UpdateResponse solrResponse = solrServer.add(solrDoc);

我查看了 SolrInputDocument 对象,它确实具有正确的格式,即编码版本。

如果有人可以为此提供指针,我将不胜感激。

谢谢

4

1 回答 1

1

我认为这是因为您的标记器

一个很好的通用标记器,可以去除许多无关字符并将标记类型设置为有意义的值。标记类型仅对识别相同标记类型的后续标记过滤器有用。没有任何过滤器使用 StandardTokenizer 的类型。

关于标准分词器

这里查看

您可以在 solr/schema.xml 中更改所有这些行为

于 2012-06-27T07:17:56.587 回答