0

このタグを使用しているので、検索キーワードとして「appledell」(引用符なし)を入力すると、AppleとDellの両方の結果が表示されます。

<fieldType name="text_en" class="solr.TextField" positionIncrementGap="100">
            <analyzer>
                <tokenizer class="solr.StandardTokenizerFactory" />
                <filter class="solr.StandardFilterFactory" />
                <filter class="solr.LowerCaseFilterFactory" />
                <filter class="de.hybris.platform.solrfacetsearch.ysolr.synonyms.HybrisSynonymFilterFactory" ignoreCase="true" synonyms="en" coreName="${solr.core.name}"/>
                <filter class="solr.WordDelimiterFilterFactory"
                    generateWordParts="1" generateNumberParts="1" catenateWords="1"
                    catenateNumbers="1" catenateAll="0" splitOnCaseChange="0" />
                <filter class="de.hybris.platform.solrfacetsearch.ysolr.stopwords.HybrisStopWordsFilterFactory" ignoreCase="true" lang="en" coreName="${solr.core.name}"/>
                <filter class="solr.StopFilterFactory" words="stopwords_en.txt" ignoreCase="true" />
                <filter class="solr.ASCIIFoldingFilterFactory" />
                <!-- <filter class="solr.SnowballPorterFilterFactory" language="English" /> -->
                <filter class="EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15" side="front" />
                <filter class="EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15" side="back" />
            </analyzer>
</fieldType>

Apple n Dellを使用して個別に検索すると、正常に機能しています。しかし、appledellでは結果が見つかりません。どんなポインタでも高く評価されます。

ありがとう。

4

1 に答える 1

1

これは、人々がNGramを使用する通常の方法ではありません。通常、「apple」または「dell」を探すときは、その逆ではなく、「appledell」を検索します(私が正しく理解していれば、それが必要です)。

その場合、EdgeNGramFilterFactoryをクエリアナライザーにのみ適用する必要があります(通常の方法は、インデックスアナライザーにのみ適用することです)。ただし、「appledell」は「ap」「app」などの多くのトークンに分解されるため、他の副作用もあります。たとえば、「application」も一致します。

于 2012-06-15T12:25:13.250 に答える