Лучшие результаты поиска с использованием Lucene - PullRequest
1 голос
/ 22 февраля 2010

У меня есть база данных с большим количеством книг. У меня есть такие поля, как название, описания, авторы и т. Д.

Я индексирую заголовок с повышением 100f и описание с усилением 0,1f, оба поля имеют токены и стволовые.

Я ищу в одном поле ввода, которое ищет во всех доступных полях, используя логический запрос, объединенный с BooleanClause.Occur.SHOULD и содержащий шаблонный запрос для каждого поля. Я также удаляю все «стоп-слова» из запроса для начала.

Проблема, с которой я сталкиваюсь, заключается в том, что я ищу строку без кавычек

"de wetenschap van het leven", после удаления стоп-слов я получаю "wetenschap leven"

Запрос на заголовок становится "*wetenschap* *leven*", запрос на описание такой же, с булевым запросом переноса, объединенным с BooleanClause.Occur.SHOULD.

Следующие книги находятся в БД

  • Wetenschappelijk denken. Een Inleiding voor de medische en biomedische wetenschappen en voor de andere levenswetenschap.
  • De wetenschap van de aarde. Более чем Levende Planet
  • Атлас ван де menselijke levensloop
  • De wetenschap Ван Хет Левен. За эненхейд в биологический диверсиит

Книга вернулась в первые 4 книги, это хорошо, но в этой реализации мы обрезали по 3, а остальные ниже ссылки «читать дальше». Просто увеличить отсечение не вариант

Для меня книга "De wetenschap van het leven. Over eenheid in biologische diversiteit" соответствует запросу "больше", чем другим (или мне так кажется), но я не могу найти правильную комбинацию индекс / поиск чтобы сделать эту работу. У кого-нибудь есть идея?

Ответы [ 3 ]

2 голосов
/ 23 февраля 2010

Несколько предложений:

  1. Не удаляйте стоп-слова - они кажутся важной частью вашего поискового запроса.
  2. Не используйте подстановочные знаки - ищите только те слова, которые вам нужны. Я считаю, что лучше всего будет использовать PhraseQuery - например, de wetenschap van het leven.
  3. Не искать в конце предложения. Это сложнее - вам может понадобиться проиндексировать каждое предложение отдельно.
  4. Чтение Отладка проблем релевантности в поиске - вы, вероятно, получите другие идеи там.
1 голос
/ 07 марта 2010

Я думаю, что SpanQuery (в частности, SpanNearQuery) может быть тем, что вам нужно.

Учитывая документ "Быстрая коричневая лиса перепрыгивает через ленивую собаку"

он может найти совпадение для "коричневой лисы" и "ленивого пса". Вы можете отрегулировать настройку наклона, чтобы отрегулировать расстояние между двумя фразами / терминами поискового запроса ... короче говоря, это дает вам множество инструментов для настройки поиска.

Также незнакомый с голландским (?) Языком, вы, возможно, захотите обрезать свои запросы, если это возможно, и избегать лидирующих подстановочных знаков - они довольно дороги и ведут к снижению точности и повторного вызова.

0 голосов
/ 24 февраля 2010

Я улучшил релевантность, добавив также поиск по фразе по всей строке.Таким образом, мы по-прежнему получаем поведение «поиск во всем», и заголовки гораздо более актуальны, чем остальные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...