Я использую SOLR в качестве поисковой системы для интрасети с чуть более 40000 документов.Я сохраняю это очень просто, используя директиву copyField для копирования полей title
и keywords
в поле content
и индексирования только этого.
С тех пор мы использовали эту конфигурацию:
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory" />
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1" preserveOriginal="1" />
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.SnowballPorterFilterFactory" language="German" />
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>
Это работало довольно хорошо, но были жалобы, что подстановочный знак нужно было устанавливать вручную.Поэтому я добавил NGRamFilterFactory
в качестве последней строки в анализаторе:
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory" />
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1" preserveOriginal="1" />
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.SnowballPorterFilterFactory" language="German" />
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
<filter class="solr.NGramFilterFactory" minGramSize="3" maxGramSize="30" />
</analyzer>
Проблема теперь заключается в следующем: со старой конфигурацией, которую я использовал для поиска 7 документов с определенным ключевым словом («Sony»).Теперь их всего 2. Я полностью очистил индекс и собрал его с нуля.Когда я снова вынимаю эту строку и переиндексирую документы, она снова работает, как и ожидалось.Это приводит меня к вопросам, которые у меня есть:
- Является ли FilterFactory подходящей для меня вещью или это должна быть фабрика токенизаторов?А если токенизатор: может ли он работать после фильтров?
- Я добавляю документы в формате xml траншами по 75 документов и выполняю фиксацию в самом конце.Должно ли быть больше коммитов?
- Был еще один, который я забыл сейчас .. grr
Заранее спасибо!