В Solr у меня есть следующее поле для выполнения точного поиска регулярных выражений фразы в текстовых полях (каждое> 1 КБ):
<fieldType name="text_keyword_lowercase" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
</fieldType>
- Как и ожидалось, регулярные выражения ищут начало текста очень быстро (
/sear.* ph.ase.*/
); - Другие, середина и конец (
/.*sear.* ph.ase.*/
,/.*sear.* ph.ase/
) работают медленно (поиск среди 200 000 документов в solr занимает около 900 мс на моей рабочей станции);
Требование состоит в том, чтобы иметь возможность искать несколько сотен миллионов документов в течение нескольких секунд. Любые предложения по улучшению производительности последних двух? Или, может быть, предложение по другому подходу/инструментам?