2012-06-29 4 views
4

저는 Solr 검색을 통해 약 2k PDF 파일의 색인을 생성하고 예상되는 결과를 제공하는 Adobe ColdFusion 응용 프로그램을 가지고 있습니다. 그러나 컬렉션에 대한 각 검색 쿼리는 일반적으로 25-30 초 .cfsearch 및 SOLR을 사용하여 ColdFusion PDF 파일을 매우 느리게 검색합니다.

<!--- query database files ---> 
<cfset getfiles = application.file.getfiles()> 

<!--- create solr query set ---> 
<cfset filesQuery = QueryNew(" 
    fileUID 
    , filepath 
    , title 
    , description 
    , fileext 
    , added 
")> 

<!--- create new file query with key path and download url ---> 
<cfoutput query="getfiles"> 
<cfset ext = trim(getfiles.fileext)> 
<cfset path = expandpath('/docs/#fileUID#.#ext#')> 

<cfscript> 
    newRow = QueryAddRow(filesQuery); 
    QuerySetCell(filesQuery, "fileUID","#fileUID#"); 
    QuerySetCell(filesQuery, "filepath","#path#"); 
    QuerySetCell(filesQuery, "title","#filename#"); 
    QuerySetCell(filesQuery, "description","#description#"); 
    QuerySetCell(filesQuery, "added","#added#"); 
</cfscript> 

</cfoutput> 

<!--- index the bunch ---> 
<cfindex 
    query = "filesQuery" 
    collection = "resumes" 
    action = "update" 
    type = "file" 
    key = "filepath"  
    title = "title" 
    body = "title, description" 
    custom1 = "fileext" 
    custom2 = "added" 
    category= "file" 
    status = "filestatus"> 

이 파일이 검색되는되고 (25 ~ 30 초) SOLR 검색이 일어나는 곳 방법은 다음과 같습니다 :

내가 SOLR에 2K PDF 파일을 색인화하는 방법입니다

<!--- imagine form with (form.search) for terms ---> 

<cfsearch name = "results" 
    collection = "resumes" 
    criteria = "#form.search# 
    contextPassages = "1" 
    contextBytes = "300" 
    maxrows = "100" 
    contextHighlightBegin = "<strong>" 
    contextHighlightEnd = " </strong>"> 

<!--- show (results) query ---> 

프로젝트에 대한 추가 정보 : 모든 파일의 길이가 1 페이지 미만이므로 Solr에 대한 인덱스 결과 생성시 문자 분리가 없습니다. 나는 현저한 변화가없는 ColdFusion Administrator에서 Solr 버퍼 제한을 사용했습니다 (현재 40). 저는 MS Server 2003, 1.86 Xeon - Adobe ColdFusion 9.0.1 및 1GB RAM을 갖춘 개발 용 VM을 사용 중입니다. JVM은 Sun Microsytems (14.3-b01)입니다. 거의 아무 것도 서버 측을 실행하지 않기 때문에 성능은 외부 요소의 영향을받지 않아야합니다.

시기 적절하지 않은 방식으로 예상되고 완벽한 결과를 제공합니다.

+0

업데이트 !!! 문제는 cfsearch와 cfdump 병목 현상이 결합되어 결국 검색 당 약 30 초가 걸립니다. 예상되는 결과가 나타나는지 확인하기 위해 태그 조합을 사용하고있었습니다. cfsearch를 통해 컬렉션을 쿼리하고 cfloop 쿼리를 통해 결과를 반환하면 모든 성능 문제가 해결되었습니다. 현재 컬렉션은 약 1 ~ 2 초 만에 거의 3k 개의 레코드를 처리합니다. – myshyzile

답변

2

CFSolrLib을 사용해보세요. 그것은 Solr API를 사용합니다. 가능한 경우 우회하여 성능을 향상시킬 수 있습니다 <cfsearch>