在Solr中搜索文档中的文本
本文关键字:文本 文档 搜索 Solr | 更新日期: 2023-09-27 18:13:58
你好,我对Solr模块MoreLikeThis感兴趣,但我不知道如何使用它。我有一个字符串,我不想在文档中搜索类似的文本,所以我这样做:
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我添加:"For sport driving"和在XML中我有文档的描述有:"For sport driving mercedes each class"..结果我没有看到这个命题,但是myString中的所有单词都等于这个文档中的描述。请帮助。
首先你应该索引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