После реализации двух разных функций поиска на двух разных сайтах с lucene и sphinx я могу сказать, что sphinx - явный победитель.
Рассмотрите возможность использования http://sphinxsearch.com/ вместо люцена. Он используется Craigslist, среди других.
Они имеют функцию, называемую морфологическими препроцессорами:
# a list of morphology preprocessors to apply
# optional, default is empty
#
# builtin preprocessors are 'none', 'stem_en', 'stem_ru', 'stem_enru',
# 'soundex', and 'metaphone'; additional preprocessors available from
# libstemmer are 'libstemmer_XXX', where XXX is algorithm code
# (see libstemmer_c/libstemmer/modules.txt)
#
# morphology = stem_en, stem_ru, soundex
# morphology = libstemmer_german
# morphology = libstemmer_sv
morphology = none
Есть много доступных стеммеров, и, как вы можете видеть, среди них есть немецкий.
UPDATE:
Уточнение, почему я чувствую, что сфинкс стал для меня явным победителем.
- Скорость: Сфинкс быстр. Как индексирование, так и обслуживание поисковых запросов.
- Релевантность: Хотя это трудно измерить количественно, я чувствовал, что смог добиться более значимых результатов с помощью sphinx по сравнению с моей реализацией lucene.
- Зависимость от файловой системы: С lucene я не смог разорвать зависимость от файловой системы. И хотя они являются обходными путями, как создание оперативного диска, я чувствовал, что было проще выбрать опцию «запускать только в память» для sphinx. Это имеет значение для веб-сайтов с более чем одним веб-сервером, добавлением динамических данных в индекс, переиндексацией и т. Д.
Да, это всего лишь точки зрения. Однако это мнение кого-то, кто пробовал обе системы.
Надеюсь, это поможет ...