2013-01-03 92 views
3

新年快樂,很奇怪的行爲與cfhttp一cfhttpparam

新年發現我摔跤與編碼問題。我正在使用ColdFusion和CFML引擎「openBD」。我有一個CFC來處理我使用的搜索引擎(SOLR搜索引擎)的請求。我用一些論據「補充」CFC。 CFC的表現應該如此。但是,當我試圖通過一個特定的參數(#apofasi_taxonomy#)的CFC不返回任何內容(如果我直接通過上面的參數搜索引擎 - 而不是使用CFC-我能看到回報/搜索結果)

CFC的部分:

<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> 

注意,搜索引擎消耗像URL:

http://localhost/solr/areios_pagos/select/?q=blahblah&fq=apofasi_taxonomy:(3068)+ apofasi_tmima:(Α || Ζ)+ apofasi_date:(2007 || 2012)+apofasi_number:(666) 

我到現在爲止檢查的內容:我傳遞給CFC的參數100%正確(來自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

<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> 
+0

如果您搜索沒有特殊字符,它會工作嗎? –

+1

與你的問題沒有關係,但我注意到你的cfargument標籤有要求=「是」和默認值。一個人沒有打敗對方的目的嗎? –

+0

@Dan Bracuk我已經刪除了「default」和「required」指令,但它不起作用! – anarchos78

回答

0

您可能需要一個charset屬性添加到您的CFHTTP標籤

<cfhttp ... charset="ISO-8859-7" ...