В надежде на легкий ответ, прежде чем я углублюсь в пользовательский подсчет очков Lucene.
Я использую Lucene.NET v4.8.0-beta00005.
Сейчас я использую StandardAnalyzer
для индексации, поэтому я предполагаю, что он не выполняет никаких преобразований в терминах, просто удаляет стоп-слова.
При поиске я анализирую текст поиска с той же StandardAnalyzer
и составляю комбинацию ИЛИ BooleanQuery
FuzzyQuery
для каждого термина.
У нас есть требование, где нам нужно набрать 100 точных совпадений. Точные совпадения - это когда все термины из запроса точно совпадают со всеми терминами из индекса (в любом порядке).
У нас нет строгих требований для оценки не точных совпадений, но они должны быть ниже 100.
В нашей существующей реализации с использованием полнотекстового поиска SQL Server у нас есть простой настраиваемый алгоритм оценки, который бысравнить ключевые слова из поискового запроса с ключевыми словами каждого соответствия на основе процентного соотношения совпадающих ключевых слов от всех ключевых слов соответствующего документа и сВзвешивание, основанное на длине кеворда, будет вычислять счет.Поэтому, когда все слова в документе точно совпадают (в любом порядке) со словами в запросе, результат будет равен 100.
Есть ли простой способ добиться аналогичного поведения с BooleanQuery
из FuzzyQuery
в Lucene.NET?