7

いくつかの小さな構成とスキーマの変更を除けば、SOLR1.4のほとんどバニラインストールがあります。

<requestHandler name="standard" class="solr.SearchHandler" default="true">
    <!-- default values for query parameters -->
    <lst name="defaults">
        <str name="defType">dismax</str>
        <str name="echoParams">explicit</str>
        <str name="qf">
            text
        </str>
        <str name="spellcheck.dictionary">default</str>
        <str name="spellcheck.onlyMorePopular">false</str>
        <str name="spellcheck.extendedResults">false</str>
        <str name="spellcheck.count">1</str>
    </lst>
</requestHandler>

インデックス作成に使用している主なフィールドタイプは次のとおりです。

<fieldType name="textNoHTML" class="solr.TextField" positionIncrementGap="100">
        <analyzer type="index">
            <charFilter class="solr.HTMLStripCharFilterFactory" />
            <tokenizer class="solr.WhitespaceTokenizerFactory"/>
            <filter class="solr.StopFilterFactory"
                    ignoreCase="true"
                    words="stopwords.txt"
                    enablePositionIncrements="true"
            />
            <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
            <filter class="solr.LowerCaseFilterFactory"/>
            <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/>
        </analyzer>
        <analyzer type="query">
            <tokenizer class="solr.WhitespaceTokenizerFactory"/>
            <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
            <filter class="solr.StopFilterFactory"
                    ignoreCase="true"
                    words="stopwords.txt"
                    enablePositionIncrements="true"
            />
            <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
            <filter class="solr.LowerCaseFilterFactory"/>
            <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/>
        </analyzer>
    </fieldType>

今、私がを使用して検索を実行すると

"q=search+term&hl=on"

ハイライトが表示され、正確なスコアが得られます。

ただし、ワイルドカードの場合、「q.alt」を使用する必要があると思いますか?本当?もしそうなら、私のクエリは次のようになります:

"q.alt=search*&hl=on"

上記のクエリを使用すると、強調表示が機能せず、すべてのスコアが「1.0」になります。

私は何が間違っているのですか?これは、本当にクールなSOLR最適化のいくつかをバイパスせずに可能にしたいことです。

乾杯!

4

2 に答える 2

8

dismaxハンドラーでワイルドカードを使用できないことを私が知っていることから、http://wiki.apache.org/solr/DisMaxRequestHandler#qを参照してください

ワイルドカード検索をシミュレートするために、 http://www.lucidimagination.com/blog/2009/09/08/auto-suggest-from-popular-queries-using-edgengrams/の手順に従ってEdgeNGramsを使用しました。実際、私は実際にはedgytextフィールドタイプをschema.xmlに追加し、検索したいフィールドのフィールドタイプを変更しただけです。

お役に立てれば!

于 2010-05-17T15:05:53.247 に答える
5

または、最新のナイトリービルドを取得してedismax(ExtendedDismaxQParser)を使用することもできます。

末尾のワイルドカードと先頭のワイルドカードの両方を処理します。

于 2010-05-23T22:48:20.097 に答える