开发者

Lucene.net - how to query a path filed with numeric sections?

I've created an index which indexes the event items in different sections of a website. This items are on the website in a structure like this:

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

These paths are stored in the field path in the index.

On the start page I need an overview of the events from all the different sections. When I'm in a section I only need the events placed under that section.

I add a booleanquery like this:

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

"path" is a field that is added through a custom index script;

To retreive the items for the start page I would search my index using:

string startPath = "/Start";

This normally gives me all item where the path starts with "/Start"

To retreive the items for section1 I would search my index using:

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

This normally gives me all item where the path starts with "/Start/Section1/Events"

I've implemented this solution for news items and that works fine. For event items it does not. When I search my index it returns no hits. The problem i开发者_如何学运维s that the last three folder names are numeric. When I rename the folders (f.e. 2011,12,25) to text (two-thousand,twelve,twenty-five) it DOES return hits.

How can I get my index to return results keeping my folder names numeric?


Use a CharTokenizer for your path, and have IsTokenChar(char c) return false for the /.

This way you'll be sure each part of your path is an individual Token.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜