2013-05-20 4 views
1

이것은 cfsearch 사용에 대한 첫 번째 시도입니다. 아래 코드는 ColdFusion 10과 함께 개발 서버에서 작업하고 이전에 만든 컬렉션입니다.ColdFusion 10 Solr cfindex가 결과를 반환 한 후 cfsearch가 때때로 만

일관된 결과를 반환 할 수있는 유일한 방법은 cfindex와 cfsearch 사이에 "절전"을 설정하는 것입니다. 그렇지 않으면 검색 결과가 90 %의 결과를 반환하지 않으며 경우에 따라 일부 또는 모든 결과가 반환됩니다. 내 쿼리에는 3 개의 레코드 만 있으며 컬렉션이 최적화되었습니다.

자주 변경되는 비즈니스 디렉터리이므로 컬렉션을 새로 고치는 것이 중요합니다.

<form action="search.cfm" method="get"> 
<input type="text" name="searchFor"> 
<input type="submit" value="Search"> 
</form> 

<cfquery name="qryData" datasource="#session.DataSource#"> 
    SELECT biz_id, biz_name, biz_city, biz_state, biz_county 
    FROM biz 
    WHERE user_level > 0 AND user_level < 99 
</cfquery> 
<cfindex collection="mySearch" action="refresh" body="biz_name,biz_city,biz_state,biz_county" key="biz_id" query="qryData"> 

<cfset sleep(100)> 

<cfsearch name="search" collection="mySearch" criteria="#url.searchFor#" maxrows="100"> 
<cfdump var="#search#"> 
+0

'getTickCount()'함수를 사용하여 색인 새로 고치기를 완료하면 소요 시간을 확인할 수 있습니다. –

+0

187 분의 1 초. –

+0

그럼 나쁘지 않습니다. 나는 한동안 콜렉션을 사용하지 않았다. (그리고 그것은 Verity와 함께했다.) 그러나 나는 당신이 일반적으로 그 콜렉션의 각각의 쿼리를 가지고 당신의 콜렉션을 새로 고치기를 원한다고 생각하지 않는다. 저는 항상 이것을 두 개의 분리 된 과정으로 보았습니다. 컬렉션을 새로 고치는 예약 된 작업과 사용자가 정보를 쿼리 할 수있게 해주는 프런트 엔드 템플릿 아마 콜렉션을 사용한 경험이있는 다른 누군가가 여기에 뛰어들 것입니다. –

답변

0

Solr 서버는 사용자가 색인에 작성한 변경 사항을 적용하는 데 시간이 필요합니다.

일반적으로 <cfindex><cfsearch>을 동일한 요청으로 처리하는 것은 매우 나쁜 생각입니다. 검색 요청이있을 때마다 요청할 경우 더욱 그렇습니다. 인덱스를 자주 업데이트해야하는 경우

은, 모든 너무 자주 실행 날짜에 인덱스를 유지하는 예약 된 작업을 만듭니다

<cfquery name="qryData" datasource="#session.DataSource#"> 
    SELECT biz_id, biz_name, biz_city, biz_state, biz_county 
    FROM biz 
    WHERE user_level > 0 AND user_level < 99 
</cfquery> 

<cfindex 
    collection="mySearch" 
    action="refresh" 
    query="qryData" 
    key="biz_id" 
    body="biz_name,biz_city,biz_state,biz_county" 
> 

을 그리고 별도로 검색을 실행합니다. ColdFusion에서 10 지원 the deltaimport action 전체 새로 고침을하는 것보다 더 효율적이 될 수 있음을

<form action="search.cfm" method="get"> 
    <input type="text" name="searchFor"> 
    <input type="submit" value="Search"> 
</form> 

<cfsearch name="search" collection="mySearch" criteria="#url.searchFor#" maxrows="100"> 
<cfdump var="#search#"> 

참고.