2014-11-13 2 views
0

Мне нужно увеличить результаты, которые можно найти в начале строки. Например, для стран: Египта и Сейшельских островов.Solr поиск с начала строки

Типы пользователей "е" в текстовом поле и ответ ГУМЗА будут:

  • S е YCH х LL й сек
  • Е gypt

Но как видите, «Египет» начинается с «е». И я нужен этот результат быть увеличен до:

  • E gypt
  • S е YCH е Л.Л. е s

Любые другие результаты должны быть оценены как обычно , Есть ли какие-то специальные токенизаторы/сериализаторы? Или могут быть специальные символы в синтаксисе SolrQuery?

UPD:

Часть моей schema.xml, который описывает тип текстового поля:

<fieldType name="text" class="solr.TextField" omitNorms="false"> 
    <analyzer type="index"> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.StandardFilterFactory"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    <filter class="solr.NGramFilterFactory" minGramSize="1" maxGramSize="20" side="front" /> 
    </analyzer> 
    <analyzer type="query"> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.StandardFilterFactory"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
</fieldType> 
+0

Я полагаю, вы используете например, NGramTokenizer или какой-то такой? – femtoRgon

+0

@femtoRgon, вы правы. Я обновил свой вопрос, чтобы вы могли посмотреть на мою конфигурацию типа текстового поля. –

ответ

0

проблема решена с помощью EdgeNGramFilterFactory вместо :

<fieldType name="text_start_end" class="solr.TextField" omitNorms="false"> 
    <analyzer> 
    <tokenizer class="solr.ClassicTokenizerFactory"/> 
    <filter class="solr.PositionFilterFactory"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    <filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="20" side="front" /> 
    </analyzer> 
</fieldType> 
Смежные вопросы