Мне нужно найти любые термины в индексе lucene, соответствующие определенному регулярному выражению. Я знаю, что я могу сделать это с помощью TermsComponent
в Solr, если он configed так:LUCENE: поиск терминов, соответствующих регулярному выражению
<searchComponent name="terms" class="solr.TermsComponent"/>
<!-- A request handler for demonstrating the terms component -->
<requestHandler name="/terms" class="solr.SearchHandler" startup="lazy">
<lst name="defaults">
<bool name="terms">true</bool>
<bool name="distrib">false</bool>
</lst>
<arr name="components">
<str>terms</str>
</arr>
</requestHandler>
Например, я хочу получать какие-либо термины, содержащие «поверхностные дефекты». Использование Solr я могу это сделать:
http://localhost:8983/solr/core1/terms?terms.fl=content&
terms.regex=^(.*?(\bsurface%20defects\b)[^$]*)$&
terms.sort=count&
terms.limit=10000
Но мой вопрос, как я могу добиться того же с помощью API Lucene, не Solr? Я заглянул в класс org.apache.solr.handler.component.TermsComponent
, но для меня это не очень очевидно.