2013-08-07 2 views
1

У меня есть таблица базы данных, содержащая ~ 30 ГБ данных. Я индексирую его с помощью DIH. Данные индексирования занимают всего 1 час 15 минут, но поиск выполняется очень медленно, и занимает около 1 минуты, что кажется неправильным. Пожалуйста, помогите, если кто-то столкнулся с той же проблемой.Solr DIH индексирование выполняется быстро, но поиск очень медленный

Я доказываю содержимое файлов.

данных config.xml

<dataConfig> 
    <dataSource type="JdbcDataSource" 
       driver="com.mysql.jdbc.Driver" 
       url="jdbc:mysql://Battrdbtest20/test_results" 
       batchSize="-1" 
       user="results" 
       password="resultsloader"/> 
    <document> 
    <entity name="Syndrome" 
     pk="test_file_result_id" 
     query="SELECT * FROM Syndrome"> 

     <Field column="test_file_result_id" name="test_file_result_id"/> 
     <Field column="syndrome" name="syndrome"/> 
    </entity> 
    </document> 
</dataConfig> 

schema.xml (Измененная только поля, чтобы удовлетворить мои данные)

<fields> 

    <field name="test_file_result_id" type="slong" indexed="true" stored="true" required="true" omitNorms="true" multivalued="false" /> 
    <field name="syndrome" type="string" indexed="true" stored="true" required="true" omitNorms="false" multivalued="false" /> 

</fields> 

<uniqueKey>test_file_result_id</uniqueKey> 

<defaultSearchField>syndrome</defaultSearchField> 

NO ИЗМЕНЕНИЕ solrconfig.xml

test_file_result_id является идентификатор 10 цифры. И синдрома поле хранит blob, которые содержат огромные данные) вид содержимого файла журнала).

Я хотел бы упомянуть, что при поиске по test_file_result_id результаты поиска появляются в течение секунды, но для синдрома это занимает больше минуты.

Спасибо заранее!

+0

Я искал ключевое слово с подстановочным знаком * i.e. "* *", который делал поиск очень медленным. Когда я просто использую в качестве строки поиска, он дает результат в течение секунды. –

ответ

0

Я предполагаю, что string определяется как solr.StrField в вашем schema.xml.

Поскольку у вас есть куча данных, возможно, было бы полезно использовать тип поля, который имеет правильный набор tokenizers, analyzers and filters.

Например, добавление StandardTokenizerFactory содержит токены в значащее значение.

Пример определения FieldType:

<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100" omitNorms="true"> 
    <analyzer type="index"> 
    <tokenizer class="solr.StandardTokenizerFactory" /> 
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" /> 
    <filter class="solr.LowerCaseFilterFactory" /> 
    </analyzer> 
</fieldtype> 

Вы могли бы попробовать что-то подобное, и это должно иметь значение для времени отклика.

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