2

空白の提案者を持つことが可能かどうか知りたいですか?私は提案者と協力しましたが、トークンの結果しか得られません。

私が探しているものの例:

Indexed item: b123-456

これはB123および456として同化されます。現在、ユーザーはb123456を探しています。検索は0件の結果を返します(0件の結果が返されない場合、これは発生しないはずです)

ここで、b123と456を別々に使用することを推奨する提案があります。

サーバルスポットで長い英数字を分割し、トークンが存在するかどうかを確認し、2つまたは3つのトークンが存在する場合はさらに高いスコアを付けます。

用語を分割する独自のコードを書くこともできますが、それでは何千ものクエリが実行されて結果が得られます。

このような振る舞いを示すものはありますか?

可能性が高いために空白が不可能な場合は、「-」、「/」、「」などの特殊文字を省略した提案者がいる可能性があります。

4

1 に答える 1

0

これを行う最善の方法は、"schema.xml" で、それに応じてインデックス作成フェーズとクエリフェーズでフィールド タイプを構成することです。

そうは言っても、インデックスとクエリの分析フェーズがSOLRでどのように機能するかについて少し調査することをお勧めします。私の推測では、solr.WordDelimiterFilterFactory に注目する必要があります (以下の例を参照)。

これは、最初に役立つ可能性のある1つの例です。(保証はありません :-) )

幸運を!

<!-- A text field with defaults appropriate for English, plus
     aggressive word-splitting and autophrase features enabled.
     This field is just like text_en, except it adds
     WordDelimiterFilter to enable splitting and matching of
     words on case-change, alpha numeric boundaries, and
     non-alphanumeric chars.  This means certain compound word
     cases will work, for example query "wi fi" will match
     document "WiFi" or "wi-fi".
     -->
    <fieldType name="text_en_splitting" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true">
        <analyzer type="index">
            <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/>
            <tokenizer class="solr.WhitespaceTokenizerFactory"/>
            <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
            <filter class="solr.LowerCaseFilterFactory"/>
        </analyzer>
        <analyzer type="query">
            <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/>
            <tokenizer class="solr.WhitespaceTokenizerFactory"/>
            <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
            <filter class="solr.LowerCaseFilterFactory"/>
        </analyzer>
    </fieldType>
于 2014-05-25T17:35:50.143 に答える