こんにちは 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 内のすべての単語は説明と同じですこのドキュメントで..助けてください。