3

あけましておめでとう、

新年は、コーディングの問題に取り組んでいることがわかりました。ColdFusion を使用しており、CFML エンジンは「openBD」です。私が使用している検索エンジン (SOLR 検索エンジン) のリクエストを処理する CFC があります。私はその 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 に渡す引数は (html から) 100% OK です。検索エンジンが上記の URL 構文を使用できるかどうかを再確認しました。しかし、私は非常に奇妙な行動に気付きました。URL から # apofasi_taxonomy#または#apofasi_tmima#引数を完全に除外すると、CFC が機能します (結果が返されます)。#apofasi_taxonomy#引数が取る値はapofasi_taxonomy:(ΠΟΙΝΙΚΕΣ)、 、apofasi_taxonomy:(ΠΟΛΙΤΙΚΕΣ)apofasi_taxonomy:(3068)またはapofasi_taxonomy:(ΠΟΙΝΙΚΕΣ || 3068)などapofasi_taxonomy:(ΠΟΙΝΙΚΕΣ || ΠΟΛΙΤΙΚΕΣ)です。

もう 1 つ気づいたことがあります。# 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>
4

1 に答える 1

0

cfhttp タグに charset 属性を追加する必要がある場合があります

    <cfhttp ... charset="ISO-8859-7" ...
于 2014-04-21T20:26:36.707 に答える