1

私はsolrを初めて使用し、検索結果の強調表示を実装するように依頼されました。私の検索クエリは次のようなものです、

query = 'searchterm1'AND'searchterm2'のようなテキスト

次に、solrに「searchterm1」「searchterm2」をそれぞれ黄色青色で強調表示するように指示する必要があります。これはsolrでも可能ですか?はいの場合、どうすればそれを実行できますか?

これは、現在検索結果を強調表示しているコードスニペットです。

    private AbstractSolrQuery _query = new SolrQuery(searchterm1) && new SolrQuery(searchterm2);

    public SolrQueryResults<Document> Execute(string defaultField)
    {
        var results = _solr.Query(_query, new QueryOptions
        {
            Rows = 100,
            Fields = Document.GetPropertiesExceptList(new List<string>{"text","text_exact"}).ToArray(),
            ExtraParams = new Dictionary<string, string> {
                    { "df", defaultField },
                    { "hl.fragsize", "0" },
                    { "hl", "true" }
            }
        });

        Highlight(results);
        return results;
    }

    private void Highlight(SolrQueryResults<Document> results)
    {
        foreach (var result in results)
        {
            foreach (var highlightedSnippet in results.Highlights[result.Id.ToString()])
            {
                result.SetProperty("content", highlightedSnippet.Value.ToList());
            }
        }
    }

これに関する助けをいただければ幸いです。

ありがとう

4

2 に答える 2

2

スニペットを別の色で返すことができるhl.fragmentsBuilderを確認できます。検索語、一致、またはフィールドに適用されるかどうかはわかりません。

于 2013-01-02T08:55:11.753 に答える
0

次のパラメータを のrequestHandler定義に設定しsolrconfig.xmlて、異なる色で強調表示できます。好きなように背景色を設定できます。

   <str name="hl.simple.pre">&lt;b style="background:yellow"&gt;</str>
   <str name="hl.simple.post">&lt;/b&gt;</str>

requestHandler の完全な例は次のようになります。

  <requestHandler name="/select" class="solr.SearchHandler">
     <lst name="defaults">
       <str name="echoParams">explicit</str>
       <int name="rows">10</int>
       <str name="df">text</str>

     <!-- Highlighting defaults -->
       <str name="hl">on</str>
       <str name="hl.fl">*</str>
       <str name="hl.simple.pre">&lt;b style="background:yellow"&gt;</str>
       <str name="hl.simple.post">&lt;/b&gt;</str>
     </lst>
   </requestHandler>

詳細については、HighlightingParameters を確認してください。

于 2013-01-02T08:59:34.900 に答える