1

こんにちは Solr モジュール MoreLikeThis に興味がありますが、使い方がわかりません。文字列が 1 つあり、ドキュメント内の同様のテキストを検索したくないので、次のようにします。

        internal static List<SolrRecord> FindMoreLikeThis(int shopId, string myString)
    {
        var result = new List<SolrRecord>();
        //coś z moreLikeThis
        var query = string.Format("shopid: {0}",shopId);

        var solr = ServiceLocator.Current.GetInstance<ISolrOperations<SolrRecord>>();

        var results3 = solr.MoreLikeThis(
            new SolrMoreLikeThisHandlerQuery(new SolrQuery(query)),
            new MoreLikeThisHandlerQueryOptions(
                new MoreLikeThisHandlerParameters(new string[] { "description" })
                    {
                        MatchInclude = true,
                        MinWordLength = 3,
                    })
                {
                    Rows = 10,
                });
        var baseDocument = results3.Match;
        var interestingTerms = results3.InterestingTerms;
        result.AddRange(results3);
        return result;
    }

myString を含むオークションの説明を検索したい。HTMLタグ、スタイル、その他のないオークションの説明。テキストのみ。

誰かがそれがどのように機能するか教えてもらえますか? 文字列を Solr にインデックス付けする必要がありますか?

@edit私はこれを持っています

        internal static List<SolrRecord> FindMoreLikeThis(int shopId, string myString)
    {
        var result = new List<SolrRecord>();

        var query = string.Format("description: \"{0}\"", myString);
        var solr = ServiceLocator.Current.GetInstance<ISolrOperations<SolrRecord>>();

        ICollection<ISolrQuery> filters = new List<ISolrQuery>();
        filters.Add(new SolrQuery("shopid: 77777"));

        var results = solr.MoreLikeThis(
            new SolrMoreLikeThisHandlerQuery(new SolrQuery(query)),
            new MoreLikeThisHandlerQueryOptions(
                new MoreLikeThisHandlerParameters(new List<string>() { "description" })
                    {
                        MinTermFreq = 1,
                        MinDocFreq = 1
                    })
                {
                    Rows = 5,
                    Fields = new List<string>() { "score", "*" },
                    FilterQueries = filters
                });
        result.AddRange(results);             

        return result;
    }

パラメータ myString に「スポーツドライビング用」を追加し、XML には説明に「スポーツドライビングメルセデス各クラス用」というドキュメントがあります。結果として、この命題は表示されませんが、myString 内のすべての単語は説明と同じですこのドキュメントで..助けてください。

4

1 に答える 1

1

まず、Solr ですべてのドキュメントをインデックス化する必要があります。

次に、リクエストを Solr に直接呼び出して、いじってみることをお勧めします。動作するようになったら、クライアント コードを記述できます。

MoreLikeThis のクエリの例は次のようになります。

http://localhost:8983/solr/select?q=apache&mlt=true&mlt.fl=manu,cat&mlt.mindf=1&mlt.mintf=1&fl=id,score

ドキュメントを参照してください: https://wiki.apache.org/solr/MoreLikeThis

于 2015-09-22T14:34:12.400 に答える