2013-02-18 5 views
1

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

В моем конкретном примере, документы в индексе Lucene представляет собой веб-страницу и поля являются такими вещами, как название, мета описания, h1 текст и т.д.

Если я ищу термин, как «велосипед», я хотите, чтобы все документы, содержащие слово «велосипед», были возвращены в любое поле. Тем не менее, я бы хотел, чтобы оценка релевантности указывала количество полей, содержащих ключевое слово «велосипед». Например, если документ содержит «велосипед» в названии и мета-описании, я бы хотел, чтобы этот документ был выше, чем один, который содержит «велосипед» только в названии. Я также хотел бы иметь возможность определить, что первый документ содержит два совпадения, где второй документ содержит только одно совпадение. Частота ключевого слова в определенном поле не имеет значения. Мне только нужно знать, соответствует ли она.

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

Любая помощь была бы высоко оценена!

ответ

1

В Lucene, searching on a field может быть сделано путем формирования запросов, таких как title:a web page. Предположим, что вы создаете запросы q1, q2, .. qn, как указано выше для n полей. Поиск с помощью этих запросов приведет к возврату идентификаторов документов, которые вы храните в списках l1, l2, .. ln. Теперь вы объедините их в наборе S. Для каждого элемента в S вы проверяете, сколько списков (или списков) принадлежит этому элементу. Это должно решить вашу проблему, если я правильно понял.

+0

Thanks rivu. Я пробовал этот подход, и он отлично работает! – nolt2232

+0

спасибо. рад, что это помогло. – rivu

Смежные вопросы