基于数据的搜索选项

基于数据的搜索选项

我写了一个例子来提高实用性。我需要知道是否可以根据我数据库中的数据、sqlserver-2008 或 Apache Solr 中的全文搜索引擎进行下一步搜索:

情况1:

数据库中的数据:

Myriam
Miriam
Myrian
Miriam
...

询问:

Myria

我想要返回的结果:

Myriam
Miriam
Myrian
Miriam

案例 2:

数据库中的数据:

Roberto Gonzalez
Roberto Perez
...

询问:

Robeto

我想要返回的结果:

Roberto Bonzalez
Roberto Perez

我想知道是否可以同时在两个引擎中搜索并决定哪个有效

谢谢

答案1

您可以在 Solr 中使用文本字段类型,它将自动检索结果“Myriam”或“Miriam”等。如果您在 solr 模式中使用此字段类型,它将标记您的文本并检索“reberto”查询的“roberto XXX”

<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>

相关内容