2013-08-23 2 views
2

cfcollection 및 cfsearch를 처음 사용하는데, 실제로 해 보았습니다. 그런 다음 컬렉션을 삭제하고 작업을 멈 춥니 다. 그런 다음 컬렉션을 삭제하고 다시 시작하기로 결정했습니다. 컬렉션이 삭제되었지만 동일한 코드가 결과를 반환하지 않습니다.ColdFusion 콜렉션/검색이 채워지지 않습니다.

내 쿼리는 수집 및 후속 검색이 선택되어야하지만 내 기준에 와일드 카드 *를 지정한 경우에도 반환 된 검색이 비어있는 5 개의 결과를 반환합니다.

아래 코드에 문제가 있습니까? 오류가 없거나 아무 것도 표시되지 않고 빈 결과 만 표시됩니다.

public void function ajax() { 

    param name="params.keywords" default="SoundCloud"; 

    onlyProvides("json"); 

    local.collectionPath = expandPath("./") & "collections/"; 

    // Delete 
    /* 
    collection 
     action="delete" 
     collection="pincollection" 
     path="#local.collectionPath#"; 
    */ 

    collection 
     action="list" 
     name="local.collectionList"; 

    local.collectionList = valueList(collectionList.name); 

    if (! listFind(local.collectionList, "pincollection")) { 

     collection 
      action="create" 
      collection="pincollection" 
      engine="solr" 
      categories="yes" 
      path="#local.collectionPath#"; 

    } 

    local.pins = model("pin").findAll(

     include  = "user", 
     order  = "createdat DESC" 

    ); 

    index 
     collection="pincollection" 
     action="update" 
     type="custom" 
     title="title" 
     body="description" 
     custom1="latitude" 
     custom2="longitude" 
     custom3="typeid" 
     custom4="createdAt" 
     custom5="updatedAt" 
     query="local.pins" 
     category="typeid" 
     key="id"; 

    search 
     name="local.pinSearch" 
     collection="pincollection" 
     contextHighlightBegin="<strong>" 
     contextHighlightEnd="</strong>" 
     category="2,1" 
     maxrows="100" 
     criteria="•"; 


    writeDump(var=local.pinSearch); // Empty search query. 
    writeDump(var=local.pins, abort=true); // Original query returns 5 results. 

    renderWith(data=local.pinSearch, layout=false); 

} 

저는 Railo를 사용하고 있습니다.

내 모음 폴더에서 내 모음 폴더를 만들었지 만 파일은 포함되어 있지 않습니다.

저는 검색을 위해 ColdFusion/Railo를 사용하는 초보자입니다. 그것은 솔직하게 보였지만 나는 혼란 스럽습니다.

감사합니다. Mikey.

PS - CFWheels를 사용하고 있으므로 일부 CFWheels 특정 기능을 사용하고 있습니다. 이들은 무시할 수 있습니다.

+0

하지 질문에 대한 답변,하지만 당신은 데이터 검색을 수행 할 때마다 인덱싱 할 수 없습니다. 인덱싱은 별도의 프로세스로 수행해야합니다. 대개 데이터베이스에서 항목을 추가/업데이트/삭제하거나 시스템에서 문서를 추가/업데이트/삭제할 때입니다. 컬렉션은 한 번만 만들어 져야하며 필요에 따라 컬렉션을 다시 작성해야합니다. –

+0

@ Scott Stroz 감사합니다. 그래서, "create"가 현재 들어있는 조건 내에서 이것을 배치해야합니까? 따라서 존재하지 않는다면 생성하여 채 웁니다. 아니면 정상적으로 검색하면됩니까? 논리적으로 들립니다. 나는 이것에 관해 모두 새로운 것이다. 그러나 여전히 결과가 표시되지 않습니다. –

+0

네, 그렇게 할 수 있습니다. 검색 컬렉션을 사용하면 삽입/업데이트/삭제 작업도 컬렉션을 업데이트하는지 확인합니다. 또한 콜렉션 및 재 인덱스를 제거하는 프로세스가 있습니다. 여기서 콜렉션이 존재하는지 확인하기 위해 콜렉션이 존재하는지 확인합니다. 콜렉션이 존재하지 않으면 생성하고 인덱스를 작성합니다. –

답변

0

문제를 해결하기 전에 가능한 경우 전용 Solr 서버로 전환하는 것을 고려하십시오. 우리는 CF9 년 전에 Solr의 한계를 빨리 깨고 Shannon Hicks의 CFSolrLib 프로젝트를 사용하여 Tomcat의 Solr을 새로 설치했습니다. 다음과 같은 이점이 있습니다.

  • CF 서버의 오버 헤드 감소.
  • 인덱싱 성능 향상.
  • 검색과 관련된 문제 해결을 귀하의 경우와 같이 나머지 응용 프로그램과 구분합니다.
  • Solr 서버를 자유롭게 변경/업그레이드 할 수 있습니다.

섀넌의 GitHub의에 프로젝트 : https://github.com/iotashan/cfsolrlib

MC