首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cfhttp和cfhttpparam的奇怪行为

cfhttp和cfhttpparam的奇怪行为
EN

Stack Overflow用户
提问于 2013-01-03 16:03:40
回答 1查看 465关注 0票数 3

新年快乐,

新年时,我遇到了一个编码问题。我使用的是ColdFusion和CFML引擎“openBD”。我有一个CFC来处理我使用的搜索引擎(SOLR搜索引擎)的请求。我要用一些论据来“喂”那个CFC。CFC执行它应该做的事情。但是,当我试图传递一个特定的参数(#apofasi_taxonomy #)时,CFC不会返回任何内容(如果我使用CFC直接将上述参数传递给搜索引擎-not,我可以看到返回/搜索结果)。

CFC的部分:

代码语言:javascript
复制
  <cffunction name="searchP" access="remote" returnFormat="json">         
      <cfargument name="q" type="string" default="" required="yes"> 
      <cfargument name="apofasi_taxonomy" type="string" default="apofasi_taxonomy:(*)" required="yes">
      <cfargument name="apofasi_tmima" type="string" default="apofasi_tmima:(*)" required="yes">
      <cfargument name="apofasi_date" type="string" default="apofasi_date:(*)" required="yes">  
      <cfargument name="apofasi_number" type="string" default="apofasi_number:(*)" required="yes"> 
      <!---<cfargument name="apofasi_taxonomy" type="string" default="*">
      <cfargument name="apofasi_tmima" type="string" default="*">
      <cfargument name="apofasi_date" type="string" default="*">  
      <cfargument name="apofasi_number" type="string" default="*">--->

      <cfset theUrl = 'http://localhost/solr/areios_pagos/select/?'>

      <cfhttp method="get" url="#theUrl#" port="8090" result="rs" username="abcd" password="********">
        <cfhttpparam type="url" name="q" value="#q#">
        <cfhttpparam type="url" name="fq" value="#apofasi_taxonomy#+#apofasi_tmima#+#apofasi_date#+#apofasi_number#">
        <!---<cfhttpparam type="url" name="fq" value="apofasi_taxonomy:(3068 || ΠΟΙΝΙΚΕΣ) AND apofasi_date:(2010)">--->        
        <!---<cfhttpparam type="url" name="fq" value="apofasi_taxonomy:(3068) AND apofasi_date:(*) AND apofasi_number:(*)">--->
        <cfhttpparam type="url" name="rows" value="120">
        <cfhttpparam type="url" name="wt" value="json">
        <cfhttpparam type="url" name="sort" value="score desc">
        <cfhttpparam type="url" name="hl" value="true">
        <cfhttpparam type="url" name="hl.fl" value="content,title">
        <cfhttpparam type="url" name="fl" value="grid_title,title,url,ida,model,search_tag,solr_id">
        <cfhttpparam type="url" name="f.content.hl.alternateField" value="content">
        <cfhttpparam type="url" name="hl.maxAlternateFieldLength" value="800">
      </cfhttp>

注意到搜索引擎使用的urls如下:

代码语言:javascript
复制
http://localhost/solr/areios_pagos/select/?q=blahblah&fq=apofasi_taxonomy:(3068)+ apofasi_tmima:(Α || Ζ)+ apofasi_date:(2007 || 2012)+apofasi_number:(666)

到目前为止,我检查的是:我传递给CFC的参数是100% OK (来自html),我反复检查了搜索引擎是否可以使用上面的url语法。但我注意到了一种非常奇怪的行为。当我将#apofasi_taxonomy##apofasi_tmima#参数完全排除在url之外时,CFC正在工作(它返回结果)。#apofasi_taxonomy#参数所采用的值是:apofasi_taxonomy:(ΠΟΙΝΙΚΕΣ)apofasi_taxonomy:(ΠΟΛΙΤΙΚΕΣ)apofasi_taxonomy:(3068)apofasi_taxonomy:(ΠΟΙΝΙΚΕΣ || 3068)apofasi_taxonomy:(ΠΟΙΝΙΚΕΣ || ΠΟΛΙΤΙΚΕΣ)等等。

我还注意到一件事,#apofasi_taxonomy#参数正在处理以下值:apofasi_taxonomy(ΠΟΙΝΙΚΕΣ)apofasi_taxonomy:(ΠΟΛΙΤΙΚΕΣ)apofasi_taxonomy:(ΠΟΛΙΤΙΚΕΣ || ΠΟΙΝΙΚΕΣ),但它不适用于apofasi_taxonomy:(3068)apofasi_taxonomy:(ΠΟΛΙΤΙΚΕΣ || 3068)apofasi_taxonomy:(ΠΟΛΙΤΙΚΕΣ || 3068)apofasi_taxonomy:(ΠΟΛΙΤΙΚΕΣ || ΠΟΛΙΤΙΚΕΣ || 3068)。这不奇怪吗?

#apofasi_tmima#参数所采用的值是:Α || Α1 || Α2 || Β || Β2 || Γ || Δ || Ε || ΣΤ || Ζ || ΟΛΟΜΕΛΕΙΑ,例如apofasi_tmima(Β || Β2 || ΟΛΟΜΕΛΕΙΑ)

请记住,上述值是用希腊语表示的。

有没有人能帮上忙?

恕我直言汤姆

编辑:在对问题的注释中提供的移动请求XML

代码语言:javascript
复制
<fieldType name="text_areios_pagos" class="solr.TextField" positionIncrementGap="100">
    <analyzer type="index">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt" enablePositionIncrements="true"/>
        <filter class="solr.LowerCaseFilterFactory"/> 
        <filter class="solr.EnglishPossessiveFilterFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_el.txt" enablePositionIncrements="true"/>
        <filter class="solr.GreekLowerCaseFilterFactory"/>
        <filter class="solr.GreekStemFilterFactory"/>
        <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
        <filter class="solr.PorterStemFilterFactory"/>
    </analyzer>
    <analyzer type="query">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt" enablePositionIncrements="true"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_el.txt" enablePositionIncrements="true"/>
        <filter class="solr.GreekLowerCaseFilterFactory"/>
        <filter class="solr.GreekStemFilterFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.EnglishPossessiveFilterFactory"/>
        <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/> 
        <filter class="solr.PorterStemFilterFactory"/>
    </analyzer>
</fieldType>
EN

回答 1

Stack Overflow用户

发布于 2014-04-21 20:26:36

您可能必须向cfhttp标记添加一个charset属性。

代码语言:javascript
复制
    <cfhttp ... charset="ISO-8859-7" ...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14142551

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档