SolrNet OR查询

时间:2014-01-31 15:26:11

标签: c# solr solrnet

我正在尝试查询ParentId = thread OR DataId = Thread的记录。查询保持对我的超时。下面的查询有问题吗?

var Test = solr.Query(new SolrQueryByField("ParentId", Thread) ||
                     (new SolrQueryByField("DataId", Thread)));

2 个答案:

答案 0 :(得分:1)

我不是Solr.Net的专家,但我将它用于一个项目。我只能建议你尝试几件事。

首先转到您的SOLR管理员并尝试执行查询:

(ParentId:"Thread") OR (DataId:"Thread")

如果你得到任何结果并且没有超时,你可以在Solr.Net中使用相同的字符串,如:

string strQuery = "(ParentId:\"Thread\") OR (DataId:\"Thread\")"; 
// or use * for contains instead of double quotes
var query = new SolrQuery(strQuery);
SortOrder sortOrder = new SortOrder("ParentId");
var solrQueryResult = solr.Query(query, new QueryOptions
    {
        Rows = 100, //Max Rows returned
        Start = 0,
        OrderBy = new[] { sortOrder }, //If you want the ordered result
    });
 var list = solrQueryResult.ToList();//if you want list

答案 1 :(得分:0)

您可以在不手动连接字符串的情况下执行此操作:

ISolrOperations<User> solr = ServiceLocator.Current.GetInstance<ISolrOperations<User>>();
var users = solr.Query(new SolrQuery("age:20") || new SolrQuery("age:30"), options);

更多信息: https://github.com/mausch/SolrNet/blob/master/Documentation/Querying.md

相关问题