3

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>

強調表示は、非常に遅いことを除けば、うまく機能します。これは、ハイライター/フラグメンターがすべての結果ドキュメントに対して再びステミングを行うためであることに気付きました。

なぜそれが起こるのか、どうすればこれを回避できるのか教えてください。(fastvectorhighlighter を使用すると問題が解決すると思っていましたが、そうではありませんでした)

4

2 に答える 2

1

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

    <field name="dokumentum_syn_query" type="huntext_syn" indexed="true" stored="true"   multiValued="true" termVectors="true" termPositions="true"  termOffsets="true"/>
于 2011-08-08T09:20:27.067 に答える
0

強調表示による「遅い」solr結果を避けるために、solr強調表示を使用しないことにしました。クライアント側でハイライト機能をコーディングしました。それは私にとってはうまくいきますが、クライアント側でトークン化され語幹を付けられた用語も見つけるために、solrがサーバー側で行うのと同じ方法でクライアント側で検索フレーズを処理する必要があるため、少し注意が必要です。検索して見つかったsolr。つまり、クライアント側でステミング機能を実装する必要があります。

別:

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

于 2011-08-03T11:06:49.360 に答える