在Solr的示例性部分词搜索:sarvesh,我想搜索一样rves(partial word sea

2019-08-02 23:55发布

例子:美丽
基于搜索:auti ...
我想只有一个字,而不是整个词的一部分进行搜索。
例如,当我搜索auti只有中间3个字母,而不是整个word.I我不是得到结果:就目前我使用的使用Apache Solr实现(也许是视图)的搜索API。
有什么建议吗?
我用这一个

<fieldType name="string_ci" class="solr.TextField" sortMissingLast="true" omitNorms="true">
    <analyzer>
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.StandardFilterFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="10"/>
    </analyzer>
</fieldType>

Answer 1:

您可以使用通配符查询。

在你上面的例子,你应该预先考虑并与星号追加搜索字词,所以如果有人搜索auti,查询您发送到服务器将auti

这应该把所有的结果与包含在其中的字auti所有单词。

http://www.solrtutorial.com/solr-query-syntax.html



Answer 2:

现在,因为你要搜索词中的子串,你可以添加侧=“回”自己的定义,这应该帮助你实现你的目标。

所以,你的字段类型定义如下所示:

<fieldType name="string_ci" class="solr.TextField" sortMissingLast="true" omitNorms="true">
    <analyzer>
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.StandardFilterFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="10" side="front" />
        <filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="10" side="back" />
    </analyzer>
</fieldType>


文章来源: partial word search in solr example: sarvesh , i want search like rves
标签: solr