2011-07-29 2 views
3

Solrの使い方は全く新しいですが、助けを求めています。 私は、クエリの結果を強調することができるはずのアプリケーションを開発しています。このために、私は正規表現フラグメンタを使用しています:ステミングのためにSolrの表示が遅くなるのを避ける

<highlighting> 
<fragmenter name="regex" class="org.apache.solr.highlight.RegexFragmenter"> 
<lst name="defaults"> 
    <int name="hl.fragsize">500</int> 
    <float name="hl.regex.slop">0.5</float> 
    <str name="hl.pre"><![CDATA[<b>]]></str> 
    <str name="hl.post"><![CDATA[</b>]]></str> 
    <str name="hl.useFastVectorHighlighter">true</str> 
    <str name="hl.regex.pattern">[-\w ,/\n\"']{20,300}[.?!]</str> 
    <str name="hl.fl">dokumentum_syn_query</str> 
</lst> 

フィールドは用語ベクトルとオフセットとインデックスが作成されます。ハイライトはうまく機能

<field name="dokumentum_syn_query" type="huntext_syn" indexed="true" stored="true" multiValued="true" termVectors="on" termPositions="on" termOffsets="on"/> 
<fieldType name="huntext_syn" class="solr.TextField" stored="true" indexed="true" positionIncrementGap="100"> 
     <analyzer type="index"> 
     <tokenizer class="com.morphologic.solr.huntoken.HunTokenizerFactory"/> 
     <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords_query.txt" enablePositionIncrements="true" /> 
     <filter class="com.morphologic.solr.hunstem.HumorStemFilterFactory" 
     lex="/home/oroszgy/workspace/morpho/solrplugins/data/lex" 
     cache="alma"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
     </analyzer> 
     <analyzer type="query"> 
      <tokenizer class="solr.StandardTokenizerFactory"/> 
     <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords_query.txt" enablePositionIncrements="true" /> 
     <filter class="com.morphologic.solr.hunstem.HumorStemFilterFactory" 
     lex="/home/oroszgy/workspace/morpho/solrplugins/data/lex" 
     cache="alma"/> 
      <filter class="solr.SynonymFilterFactory" synonyms="synonyms_query.txt" ignoreCase="true" expand="true"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
     </analyzer> 
</fieldType> 

を、その本当に遅いことexceptsで。これは、ハイライター/フラグメント化プログラムがすべての結果ドキュメントを再びステミングしてしまうためです。

なぜ私はこれを避けなければならないのですか? (私はfastvectorhighlighterを使用して私の問題を解決すると思ったが、それはなかった)

答えて

1

問題は、「true」の代わりに「on」という値を使用しようとしたことでした。したがって、スキームの適切な行は次のとおりです。

<field name="dokumentum_syn_query" type="huntext_syn" indexed="true" stored="true" multiValued="true" termVectors="true" termPositions="true" termOffsets="true"/> 
0

私はsolrのハイライトを使用しないことにした。 クライアント側でハイライト機能をコーディングしました。 クライアント側でトークン化された語句を見つけるためにソルがサーバー側で行うのと同じ方法でクライアント側で検索フレーズを処理する必要があるため、その作業は私には当てはまりますが、ちょっと難しいです、どのようなsolrが検索され、発見された。 つまり、クライアント側でステミング機能を実装する必要があります。

オルタナティブ:

私が思うに、結果セット内の用語ベクトルは、あなたがクライアント側で強調表示する必要があり用語の位置に関する情報を提供します。これらの情報を使用して、クライアント側の用語を強調表示することができます。しかし、私は思う:最終的にこれは本当に代替ではありません。 Solrは依然として単語の位置を計算する必要があるため、サーバー側で時間を節約することはできません。

+0

回答ありがとうございます!以前はtervVectorのことを読んでいましたが、上記のように、私はこれを使用しようとしました。 Unfortunatelly私はたぶん時代遅れのドキュメントを使用し、trueの代わりにvalueをonに設定しました。それは私がstemminを無視するのを助けたトリックでした。 – oroszgy

関連する問題