3

例:美しい
検索ベース:auti ...
単語全体ではなく、単語の一部のみで検索したい。
たとえば、auti単語全体ではなく、真ん中の3文字だけを検索すると、結果が得られません。今のところ、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>
4

2 に答える 2

4

ワイルドカード クエリを使用できます。

上記の例では、検索用語の先頭と末尾にアスタリスクを追加する必要があるため、誰かが auti を検索すると、サーバーに送信するクエリは auti になります

これにより、単語 auti を含むすべての単語を含むすべての結果が表示されます。

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

于 2012-11-20T23:20:06.313 に答える
1

単語内の部分文字列を検索したいので、定義に side="back" を追加すると、目標を達成するのに役立ちます。

したがって、フィールドタイプの定義は次のようになります。

<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>
于 2012-11-21T17:49:16.567 に答える