Я работаю с NHibernate, NHibernate.Search и Lucene.Net, чтобы улучшить поисковую систему, используемую на разрабатываемом мной веб-сайте.
По сути, я использую его для поиска содержимого документов спецификации корпорации.Это не следует путать с понятием документов Lucene: в моем случае документ спецификации (который в дальнейшем я буду называть «specdoc») может содержать много страниц, и содержимое этих страниц фактически индексируется (таким образом, сами страницы попадают в концепцию документов Lucene).Таким образом, страницы принадлежат specdoc, которые, в свою очередь, принадлежат корпорации (то есть у корпорации может быть много specdocs).Я использую атрибуты «IndexEmbedded» и «ContainedIn» NHibernate.Search, чтобы связать страницы с их specdoc и specdocs с их корпорациями, поэтому я могу запрашивать термины на страницах specdoc, и Lucene / NH.Search возвращает либо сами страницы, specdocs или корпорации, которые соответствуют запросу на страницах.Я могу запросить этот способ и получить ранжированные результаты, таким образом представляя результаты (то есть корпорации, спецдокументы или страницы) по релевантности, и это здорово.
Но теперь мне нужно нечто большее.В частности, в случае, когда я запрашиваю термины и получаю NH.Search, возвращаем корпорации, которые соответствуют, мне нужно вручную / искусственно настроить счет некоторых результатов, потому что есть корпорации, которые я хочу показать в верхней части результатаset - подумайте о «спонсируемых результатах».
Я подумываю сделать это в своем приложении, возможно, создать таблицу сущностей / баз данных, которая будет содержать связь с сущностью корпорации и значение повышения оценки.Но я не знаю, как передать это в Lucene и сделать так, чтобы он соответственно повышал результаты во время поиска.Изначально я думал о создании класса Similarity для этого, но похоже, что Similarity не может быть использовано для изменения наборов результатов во время поиска.Что касается этой страницы , похоже, мне нужно возиться с весом или выигрышем.Но документы немного поверхностны, потому что нет примеров того, как реализовать пользовательский скоринг, не говоря уже о том, чтобы интегрировать его с NH.Search.
Итак, кто-нибудь знает, как это сделать, или указывает мненекоторая документация или рабочий пример того, как сделать что-то подобное?
Спасибо!