ColdFusion PDF поиск файлов с использованием cfsearch и SOLR очень медленно

У меня есть работающее приложение Adobe ColdFusion, которое индексирует примерно 2 тыс. Файлов PDF с помощью поиска Solr и предоставляет ожидаемые результаты - однако каждый поисковый запрос к коллекции обычно занимает 25-30 секунд.

Вот как я проиндексировал 2k PDF-файлы в Solr:

<!--- 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:

<!--- 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 не было обрезания символов. Я играл с ограничением буфера Solr в ColdFusion Administrator без каких-либо заметных изменений во времени (в настоящее время он равен 40). Я нахожусь на разработке ВМ с MS Server 2003, 1,86 Xeon - Adobe ColdFusion 9.0.1 и 1 ГБ оперативной памяти. JVM - Sun Microsytems (14,3-b01). На стороне сервера почти ничего не работает, поэтому на производительность не должны влиять внешние факторы.

Это обеспечивает ожидаемые и прекрасные результаты, но не своевременно.

1 ответ

Вы можете попробовать использовать CFSolrLib. Он использует Solr API. Возможно, вы можете повысить производительность, минуя <cfsearch>

Другие вопросы по тегам