Lucene.net - как запросить путь с числовыми разделами? - PullRequest
0 голосов
/ 20 января 2011

Я создал индекс, который индексирует элементы событий в разных разделах веб-сайта. Эти элементы находятся на веб-сайте в такой структуре:

/Start/Section1/Events/2011/12/25/X-mas
/Start/Section2/Events/2012/01/01/New-years-day

Эти пути хранятся в поле path в индексе.

На стартовой странице мне нужен обзор событий из разных разделов. Когда я нахожусь в разделе, мне нужны только события, помещенные под этим разделом.

Я добавляю логический запрос вроде этого:

QueryParser queryParser = new QueryParser("path", analyzer);
Query query = queryParser.Parse(startPath);
completeQuery.Add(query, BooleanClause.Occur.MUST);

«путь» - это поле, добавляемое через пользовательский индексный скрипт;

Чтобы получить элементы для стартовой страницы, я искал бы свой индекс, используя:

string startPath = "/Start";

Обычно это дает мне все предметы, путь которых начинается с "/ Start"

Чтобы получить элементы для section1, я искал бы свой индекс, используя:

string startPath = "/Start/Section1/Events";

Обычно это дает мне все элементы, путь которых начинается с "/ Start / Section1 / Events"

Я реализовал это решение для новостей, и оно отлично работает. Для событий событий это не так. Когда я ищу свой индекс, он не возвращает хитов. Проблема в том, что последние три имени папки являются числовыми. Когда я переименовываю папки (например, 2011, 12, 25) в текст (две тысячи двенадцать двадцать пять), он возвращает хиты.

Как мне получить мой индекс, чтобы он возвращал результаты, сохраняя числовые имена папок?

1 Ответ

0 голосов
/ 26 января 2011

Используйте CharTokenizer для вашего пути и IsTokenChar(char c) верните false для /.

Таким образом, вы будете уверены, что каждая часть вашего пути является отдельной Token.

...