gpt4 book ai didi

java - Solr 编码 URL 与字符 '&'

转载 作者:行者123 更新时间:2023-11-30 07:17:26 25 4
gpt4 key购买 nike

我在使用 Solr 时遇到问题:

当我的 url 中的字符 '&' 是 enconding ('%26') 时,它不起作用:

http://localhost:8983/solr/LOREMIPSUM/select?q=shop_id:42+label_fr_str:LOL%26rows=20&indent=off

<result name="response" numFound="0" start="0">

但当情况并非如此时,我有 4223 个结果:

http://localhost:8983/solr/LOREMIPSUM/select?q=shop_id:42+label_fr_str:LOL&rows=20&indent=off

<result name="response" numFound="4223" start="0">

我有点迷路了。是不是跟request有关系,或者跟Solr的配置有关,怎么解决?还是根本不可能?

编辑:

我的 schema.xml 中定义的字段

<fieldType name="text" class="solr.TextField"
positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory" />
<filter class="solr.WordDelimiterFilterFactory"
generateWordParts="1" generateNumberParts="1" catenateWords="1"
catenateNumbers="1" catenateAll="0" splitOnCaseChange="1" />
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory" />
<filter class="solr.WordDelimiterFilterFactory"
generateWordParts="1" generateNumberParts="1" catenateWords="0"
catenateNumbers="0" catenateAll="0" splitOnCaseChange="1" />
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
</fieldType>

字段减速:

<field name="label_fr_str" type="text" indexed="true" stored="true" multiValued="false"/>

最佳答案

所以我对查询字符串进行了一些尝试,并且能够重现类似的行为。我认为问题的根源在于,如果您在 q 参数之后对下一个参数的 & 符号进行编码,Solr 会将其解释为查询的一部分,而不是查询字符串参数。

根据您在评论中提供的编码示例,您将查询参数(在本例中为行)与查询本身混合在一起。我建议将它们分开。您是否考虑使用 SolrJ客户。我知道您可能不想使用 SolrJ 客户端,但我认为您至少应该考虑使用 ClientUtils它的方法可以帮助您正确构建/编码您的网址。

关于java - Solr 编码 URL 与字符 '&',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16171985/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com