У меня есть сайт, который можно искать с помощью Lucene. Из журналов я заметил, что пользователи иногда не находят то, что ищут, потому что вводят единственный термин, но на сайте используется только множественная версия этого термина. Я бы хотел, чтобы поиск нашел и другие формы слова. Я уверен, что это проблема, которая была решена много раз, так каковы лучшие методы для этого?
Обратите внимание: этот сайт содержит только английский контент .
Некоторые подходы, о которых я думал:
- Найдите слово в каком-нибудь файле тезауруса, чтобы определить альтернативные формы данного слова.
- Некоторые примеры:
- Выполняет поиск "car", также добавляет "cars" к запросу.
- Выполняет поиск по запросу "переносить", а также добавлять к запросу слова "переносы" и "переносы".
- Выполняет поиск слов "small", а также добавляет в запрос слова "small" и "smallle".
- Выполняет поиск слов "can", также добавляет к запросу слова "can", "can", "cans" и "canned".
- И он должен работать в обратном порядке (т. Е. Для поиска «переноски» следует добавить «переносить» и «переносить»).
- Недостатки:
- Не работает для многих новых технических слов, если словарь / тезаурус часто обновляется.
- Я не уверен в производительности поиска файла тезауруса.
- Генерация альтернативных форм алгоритмически на основе некоторой эвристики.
- Некоторые примеры:
- Если слово оканчивается на «s», «es», «ed», «er» или «est», сбросьте суффикс
- Если слово оканчивается на «ies», «ied», «ier» или «iest», преобразовать в «y»
- Если слово оканчивается на "y", преобразуйте в "ies", "ied", "ier" и "iest"
- Попробуйте добавить слова "s", "es", "er" и "est".
- Недостатки:
- Генерирует множество не-слов для большинства входных данных.
- Чувствуется как хак.
- Похоже, что вы найдете на TheDailyWTF.com. :)
- Что-то гораздо более сложное?
Я думаю о некоторой комбинации первых двух подходов, но я не уверен, где найти файл тезауруса (или как он называется, так как "тезаурус" не совсем прав, но и не "словарь").