Назад | Перейти на главную страницу

варианты поиска по данным

Я пишу пример, чтобы быть более практичным. Мне нужно знать, возможен ли следующий поиск на основе данных, которые у меня есть в моей базе данных, полнотекстовых поисковых системах в sqlserver-2008 или Apache Solr:

Случай 1:

Данные в базе:

Myriam
Miriam
Myrian
Miriam
...

Запрос:

Myria

Результаты, которые я хочу вернуть:

Myriam
Miriam
Myrian
Miriam

Случай 2:

Данные в базе:

Roberto Gonzalez
Roberto Perez
...

Запрос:

Robeto

Результаты, которые я хочу вернуть:

Roberto Bonzalez
Roberto Perez

Я хочу знать, можно ли искать в обеих системах и решить, какая из них работает

Спасибо

Вы можете использовать тип текстового поля в Solr, он будет автоматически получать результаты «Myriam» или «Miriam» и т. Д. Если вы используете этот тип поля в своей схеме solr, он будет токенизировать ваш текст и получить «roberto XXX» для запроса «reberto».

<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
        <analyzer type="index">
            <tokenizer class="solr.WhitespaceTokenizerFactory"/>
            <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true"/>
            <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
            <filter class="solr.LowerCaseFilterFactory"/>
            <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/>
        </analyzer>
        <analyzer type="query">
            <tokenizer class="solr.WhitespaceTokenizerFactory"/>
            <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
            <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true"/>
            <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
            <filter class="solr.LowerCaseFilterFactory"/>
            <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/>
        </analyzer>
    </fieldType>