Список поиска Lucene.Net - PullRequest
       5

Список поиска Lucene.Net

3 голосов
/ 16 декабря 2009

Я использую Sitecore и у меня есть многолистное поле, для поиска которого я бы хотел использовать Lucene. Проблема, с которой я столкнулся, состоит в том, что поле представляет собой список фактических значений, разделенных каналом, и в этом списке может быть от 0 до бесконечного (теоретически говоря, на самом деле, возможно, всего тысячи или двух возможных) количества элементов в этом списке. Мне не удалось успешно использовать запрос с подстановочными знаками, и я не могу представить, как разбить это поле на несколько полей, поскольку в списке неизвестное количество элементов.

1 Ответ

5 голосов
/ 04 января 2010

Я использовал похожую технику при поиске для поиска в иерархии категорий. Я использую следующий метод для построения запроса, оставляя тяжелую работу классу QueryParser. Я обычно добавляю этот запрос в BooleanQuery.

QueryParser обычно отлично справляется, я часто использую его для построения большинства моих запросов Lucene - кажется, что он лучше, чем я, при создании определенного запроса в большинстве случаев !!

Еще одна вещь, которую вы можете сделать, это использовать QueryParser для его создания, затем установить точку останова и посмотреть, как был создан запрос, а затем обновить код с конкретным типом запроса.

private Query GetQuery(Sitecore.Data.ID id)
{
    string categoryId = id.Guid.ToString(); //turn ID to string
    StandardAnalyzer analyzer = new StandardAnalyzer(); //use standard analyzer
    QueryParser parser = new QueryParser("categories", analyzer); //search inside category field
    Query query = parser.Parse(categoryId); //get the query
    return query;
}
...