簡體   English   中英

Solr 編碼帶有字符“&”的 URL

[英]Solr encoding URL with the character '&'

我在使用 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">

我有點失落。 是否與請求或 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方法來幫助您正確構建/編碼您的 url。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM