Lucene.СЕТЕВОЙ запрос выделение

#lucene #lucene.net #umbraco

#lucene #lucene.net #umbraco

Вопрос:

Я использую Umbraco и наткнулся на Lucene. Я нашел много кода и статей на Lucene, но я все еще не могу создать приемлемый поиск.

У меня есть несколько полей для поиска, например. «Имя узла» и «Основной текст»

Что мне нужно:

  • Когда я ищу «мужская обувь», он должен возвращать только результаты, содержащие как «мужчины», так и «обувь», но также возвращать страницу, где в имени узла указано только «обувь», а в тексте тела указано только «мужчины».

  • Когда я ищу «обувь», я хочу, чтобы результаты содержали «обувь» или «shoes». но не «мотыги», если это возможно

  • Увеличьте поле nodeName

  • Получаем фрагмент основного текста, содержащий совпадающие слова

  • Выделите совпадающие слова как в названии страницы, так и в фрагменте основного текста

Кто-нибудь когда-нибудь делал это?

Комментарии:

1. Да, Lucene делает все, что вам нужно, и гораздо больше. Однако, поскольку вы, похоже, новичок, я бы рекомендовал использовать Apache Solr (который представляет собой поисковый сервер, построенный на базе Lucene и предлагающий множество функций «из коробки», без необходимости возиться с внутренностями.

2. Спасибо. Как мне использовать это с Umbraco …?

Ответ №1:

Это может помочь вам начать.

 var manager = ExamineManager.Instance;
var searcher = manager.SearchProviderCollection["YOURSearcher"];
var query = manager.SearchProviderCollection["YOURSearcher"].CreateSearchCriteria(BooleanOperation.Or)
   .Field("nodeName", keywords.Boost(10))
   .Or().Field("nodeName", keywords.Fuzzy())
   .Or().Field("bodyContent", keywords.Boost(5))
   .Or().Field("otherField", keywords.Boost(3));
var results = searcher.Search(query.Compile());  

Комментарии:

1. Спасибо, Киран! Что такое ключевые слова? Это не строка, не так ли? Потому что строка не имеет метода Boost.

2. Это расширение к строке, которое необходимо добавить с помощью Examine . LuceneEngine. Критерии поиска;

3. Когда я ищу несколько слов, он никогда не возвращает никаких результатов

Ответ №2:

Код Джонатана Латиги работает, это самый похожий на Google, который я смог найти на данный момент

http://our.umbraco.org/forum/developers/extending-umbraco/19329-Search-multiple-fields-for-multiple-terms-with-examine?p=0