2

termfreq(field、term)SOLR関数を使用しています。これは機能します:

?fl=product_name,termfreq(product_name,"iphon")&q=iphone 4s     //Found freq

しかし、問題は「iphone4s」のようなスペースのある用語を持つことです

?fl=product_name,termfreq(product_name,"iphon 4s")&q=iphone 4s  //Return 0 freq

その用語(フレーズ)がドキュメントに存在しますが、0freqを返します。それで、問題は、「iphone 4s」のような完全なフレーズでtermfreq()関数を使用できますか?そしてどのように?

SOLR4.1を使用しています。フィールド用アナライザーは

<fieldType name="text_ws" class="solr.TextField">
    <analyzer>
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>
</fieldType>

フィールドは

<field name="product_name" type="text_ws" indexed="true" stored="true"/>
4

1 に答える 1

0

あなたが使用しているようにWhitespaceTokenizerFactory、用語iphone 4sは用語として存在しません。
KeywordTokenizerFactory をインデックス作成に使用できますが、これは単語をトークン化せず、フレーズを使用できるようにする必要があります。
それ以外の場合は、単語をグループ化するシングル オプションを確認できます。

于 2013-03-19T14:21:12.797 に答える