Принудительно заставить Lucene (в OpenCms) показывать результаты в определенной локали - PullRequest
0 голосов
/ 11 октября 2011

У меня есть веб-сайт, подключенный к OpenCms, и он использует "Lucene" в качестве поисковой системы.Мой сайт доступен на двух языках: испанском (поддерживается) и Gallegan (не поддерживается).Я добился, что мой процесс поиска работает хорошо, но результаты всегда отображаются на испанском языке.Возможно ли заставить Lucene показывать результаты в определенной локали?

Ответы [ 2 ]

0 голосов
/ 11 октября 2011

Когда я строю поисковый индекс (в backoffice), у меня есть опция, называемая «Locale», где я могу указать локаль индекса. Я сделал это и создал два отдельных индекса; один с языком "es", который называется "index-es", а другой с языком "gl", который называется "index-gl".

Я передаю другое имя индекса с помощью функции "setIndex", использует ли мой пользователь тот или иной язык, но не работает. Всегда показывать содержимое в локали ES.

Вы ссылаетесь на это или я вас не понял?

0 голосов
/ 11 октября 2011

Когда вы строите поисковый индекс, вы можете создать новое поле с именем Language.
Используйте это поле для фильтрации результатов поиска.

EDIT

Document doc = new Document();
doc.Add(new Field("Language", "GL", Field.Store.NO,
            Field.Index.NOT_ANALYZED_NO_NORMS));
...

indexWriter.AddDocument(document);

Получить 10 лучших документов в GL:

Directory dir = FSDirectory.open(new File("..."));
IndexSearcher searcher = new IndexSearcher(dir);
Query q = new TermQuery(new Term("Language", "GL"));
TopDocs hits = searcher.search(q, 10);
searcher.close();
...