С новым годом,
Новый год застал меня в борьбе с проблемой кодирования. Я использую 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>
ΠΟΛΙΤΙΚΕΣ
- person Matt Busche   schedule 03.01.2013apofasi_taxonomy
в Solr schema.xml? Добавьте к своему вопросу запись<fields>
для этого поля, а также соответствующую запись<fieldType>
, как определено свойствомtype
. Возможно, определение поля неправильно индексирует/запрашивает числа. - person Paige Cook   schedule 03.01.2013<field>
:<field name="apofasi_taxonomy" type="text_areios_pagos" indexed="true" stored="true"/>
.<fieldType>
:<fieldType name="text_areios_pagos" class="solr.TextField" positionIncrementGap="100">
- person   schedule 03.01.2013<fieldType ...>
и</fieldType>
. - person Paige Cook   schedule 03.01.2013http://localhost/solr/areios_pagos/select/?q=blahblah&fq=apofasi_taxonomy:(3068)+apofasi_tmima:(Α || Ζ)+apofasi_date:(2007 || 2012)+apofasi_number:(666)
он работает, проблема на стороне ColdFusion. - person   schedule 03.01.2013#apofasi_taxonomy#+#apofasi_tmima#+#apofasi_date#+#apofasi_number#
, чтобы убедиться, что это именно то, что вы ожидаете? то есть это =apofasi_taxonomy:(3068)+apofasi_tmima:(Α || Ζ)+apofasi_date:(2007 || 2012)+apofasi_number:(666)
как вы его искали в solr? - person Travis   schedule 03.01.2013cfhttp
? Я не знаю, как это сделать. - person   schedule 03.01.2013<cfoutput>#apofasi_taxonomy#+#apofasi_tmima#+#apofasi_date#+#apofasi_number#</cfoutput><cfabort>
непосредственно перед тегом cfhttp, если это не сработает, используйте<cfreturn #apofasi_taxonomy#+#apofasi_tmima#+#apofasi_date#+#apofasi_number#>
непосредственно перед тегом cfhttp - person Travis   schedule 04.01.2013<cfreturn "#apofasi_taxonomy#+#apofasi_tmima#+#apofasi_date#+#apofasi_number#">
- person Travis   schedule 04.01.2013