Поиск Solr и фасети
Создается ли поиск фасетки при настройке вашей схемы или вам нужно что-то сделать, чтобы настроить это?
В основном ли он работает из всех полей, которые вы настроили для сортировки?
то вы просто используете синтаксис запроса fq, и он вернет фасет xml вместе с результатами поиска?
Есть ли хорошая статья об этом, которая помогла вам в первый раз?
Ответы
Ответ 1
Да, вы можете факсировать любое индексированное поле из коробки. Однако это может не дать вам ожидаемых результатов, пока вы не настройте поля факела в соответствии с вашими типами данных.
Графика включена и используется с помощью facet. * parameters, а не fq. fq используется, когда пользователь выбирает значение грани.
Несколько полезных советов Solr:
Ответ 2
Да, просто добавьте &facet=true&facet.field={fieldname}
к вашему запросу Url.
Вот еще один учебник: Faceting
Ответ 3
Нижеприведенный код на С#, используя пакет SolrNet.
Facet вы можете сделать это на полях, хранящихся в SOLR, убедитесь, что их строка и не имеет места для достижения лучших результатов. Mincount предназначен для ограничения минимального количества, которое должно быть указано в фасете.
QueryOptions options = new QueryOptions
{
Facet = new FacetParameters
{
Queries = new ISolrFacetQuery[]
{
new SolrFacetFieldQuery("field1"),
new SolrFacetFieldQuery("field2")
},
MinCount = 20
}
};
И приведенный ниже код для получения результатов, запрос - это поиск, введенный в интерфейсе.
var result = solr.Query(query, options);
Ответ 4
Faceting из справочника руководства Apache solr.
Ответ 5
Пакет SolrNet от Nuget Packages в С# обеспечивает простой способ достижения этого. Документация помогает. Вот пример,
public async Task SolrFaceting()
{
Console.WriteLine("facets");
var facetQuery = await _solr.QueryAsync(SolrQuery.All, new QueryOptions
{
Rows = 0,
Facet = new FacetParameters
{
Queries = new[]
{
new SolrFacetFieldQuery("FieldName1"),
new SolrFacetFieldQuery("FieldName2"),
new SolrFacetFieldQuery("FieldName3"),
new SolrFacetFieldQuery("FieldName4"),
},
Limit = 10
}
});
foreach (var facet in facetQuery.FacetFields["FieldName1"]) {
Console.WriteLine("{0}: {1}", facet.Key, facet.Value);
}
foreach (var facet in facetQuery.FacetFields["FieldName2"]) {
Console.WriteLine("{0}: {1}", facet.Key, facet.Value);
}
foreach (var facet in facetQuery.FacetFields["FieldName3"]) {
Console.WriteLine("{0}: {1}", facet.Key, facet.Value);
}
foreach (var facet in facetQuery.FacetFields["FieldName4"]) {
Console.WriteLine("{0}: {1}", facet.Key, facet.Value);
}
}