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 для поиска. Кажется прямолинейным, но я в тупике.

Thanks, Mikey.

PS - Я использую CFWheels, следовательно, некоторые функции CFWheels. Их можно игнорировать.

+0

Не ответ на ваш вопрос, но вы не должны индексировать данные каждый раз, когда вы хотите, чтобы сделать поиск. Индексирование должно выполняться как отдельный процесс - обычно, когда вы добавляете/обновляете/удаляете элементы из базы данных или добавляете/обновляете/удаляете документы из своей системы. Ваша коллекция должна быть создана ОДИН РАЗ, и при необходимости у вас должен быть отдельный процесс по ее восстановлению. –

+0

@ScottStroz Спасибо. Итак, следует ли разместить это в том условии, что в данный момент находится «create»? Итак, если этого не существует, мы создаем, а затем заполняем его, иначе просто выполняем поиск как обычно? Звучит логично. Я новичок в этом. Однако пока ничего не найдено. –

+0

Да, вы можете это сделать. Когда я использовал коллекции поиска, я уверен, что любые операции вставки/обновления/удаления также обновляют коллекцию. Кроме того, у меня есть процесс, который будет очищать коллекцию и reindex - внутри здесь я бы поставил чек, чтобы увидеть, существует ли коллекция, если нет, создать ее, а затем индексировать. –

ответ

0

Прежде чем заходить слишком далеко с устранением неполадок, подумайте о переходе на выделенный Solr-сервер, если сможете. Мы быстро попали в пределы Solr в CF9 лет назад и использовали проект CFSolrLib Shannon Hicks для подключения к новой установке Solr на Tomcat. Только некоторые из преимуществ этого:

  • Сокращение накладных расходов для вашего CF-сервера.
  • Индексирование повышения производительности.
  • Отделяет поисковые запросы, связанные с поиском, от остальной части вашего приложения (например, в вашем случае).
  • Вы получаете свободу вносить изменения/обновления на свой сервер Solr самостоятельно.

Шеннона проект на GitHub: https://github.com/iotashan/cfsolrlib

MC

Смежные вопросы