Я пытаюсь понять две вещи в этой публикации:
Почему «построено» НЕ связано с «построением», даже если в определении типа поля определен стеммер. Тем не менее, «строительство» сводится к «строительству».
Как использовать Luke для изучения указателя, чтобы увидеть, какие слова и к чему относятся. Я не мог видеть, как слово «строительство» переводится как «строить» у Луки. Я знаю, что Lucene препятствует этому, потому что я могу успешно получить строку с «зданием», выполнив поиск «сборка».
Эта ссылка была очень полезной, но не ответила на мои вопросы .
Для справки, вот фрагменты schema.xml.
<fieldType name="text_en" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<!-- in this example, we will only use synonyms at query time
<filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
-->
<!-- Case insensitive stop word removal.
add enablePositionIncrements=true in both the index and query
analyzers to leave a 'gap' for more accurate phrase queries.
-->
<filter class="solr.StopFilterFactory"
ignoreCase="true"
words="stopwords_en.txt"
enablePositionIncrements="true"
/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPossessiveFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
<!-- Optionally you may want to use this less aggressive stemmer instead of PorterStemFilterFactory:
<filter class="solr.EnglishMinimalStemFilterFactory"/>
-->
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.StopFilterFactory"
ignoreCase="true"
words="stopwords_en.txt"
enablePositionIncrements="true"
/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPossessiveFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
<!-- Optionally you may want to use this less aggressive stemmer instead of PorterStemFilterFactory:
<filter class="solr.EnglishMinimalStemFilterFactory"/>
-->
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldType>
и определение поля
<field name="features" type="text_en" indexed="true" stored="true" multiValued="true"/>
Набор данных состоит из нескольких документов, 1 документ имеет значение «здание» в поле функций, 1 документ имеет значение «построено» в том же поле и 1 документ имеет значение «Встроенный» в поле функций:
файл: hd.xml:
<field name="features">building NoiseGuard, SilentSeek technology, Fluid Dynamic Bearing (FDB) motor</field>
файл ipod_video.xml:
<field name="features">Notes, Calendar, Phone book, Hold button, Date display, Photo wallet, Built-in games, JPEG photo playback, Upgradeable firmware, USB 2.0 compatibility, Playback speed control, Rechargeable capability, Battery level indication</field>
файл sd500.xml:
<field name="features">built in flash, red-eye reduction</field>
Используя Lukeall-3.3.0, это результат, который я получаю от поиска «features: build». Обратите внимание, что я возвращаю 1 (вместо ожидаемых 3 документов) Даже в этом одном документе Я не вижу основы, то есть я вижу только исходное слово «здание», как показано:
и, опять же, в Люке поиск по запросу «features:built» возвращает два документа:
При выборе одного из них отображается исходное «построено», но не «сборка».