почему Solr не возвращает какой-либо результат по "искам", когда есть документ, содержащий слово "иски" - PullRequest
2 голосов
/ 19 июля 2011

У меня небольшая проблема с моей поисковой системой Solr.Он не возвращает никакого результата, когда я ищу слово "костюмы".Я на 100% уверен, что существует документ, содержащий слово «Костюмы».Однако я могу искать слово «костюм», и результат, содержащий «костюмы», заканчивается.

Моя схема:

<schema name="hello" version="1.3">
    <types>
        <fieldType name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/>
        <fieldType name="text" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true">
            <analyzer type="index">
                <tokenizer class="solr.WhitespaceTokenizerFactory"/>
                <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
                <filter class="solr.LowerCaseFilterFactory"/>
                <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
                <filter class="solr.PorterStemFilterFactory"/>
            </analyzer>
            <analyzer type="query">
                <tokenizer class="solr.WhitespaceTokenizerFactory"/>
                <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
                <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
                <filter class="solr.LowerCaseFilterFactory"/>
                <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
                <filter class="solr.PorterStemFilterFactory"/>
            </analyzer>
        </fieldType>
    </types>
    <fields>
        <field name="id" type="string" indexed="true" stored="true" required="true" />
        <field name="title" type="text" indexed="true" stored="true" required="true"/>
        <field name="description" type="text" indexed="true" stored="true" required="true"/>
        <field name="profileMiniature" type="string" stored="true" required="true"/>
    </fields>
    <uniqueKey>id</uniqueKey>
    <defaultSearchField>title</defaultSearchField>
</schema>

мой запрос "title:$q*^2 description:$q*".

1 Ответ

2 голосов
/ 19 июля 2011

Поиск с использованием символов подстановки отключает анализ (как описано здесь ).

Чтобы сопоставить suit с suits, вам нужно , используя , а не символы,Использование символов подстановки в любом случае не будет работать, если ваши данные имеют suit, а запрос - suits.

Не могли бы вы предоставить дополнительную информацию - возможно, пример использования, объясняющий, почему вам нужны символы подстановки?Это поможет нам найти лучшее решение вашей проблемы.

...