时间:2011-01-19 22:46:25

标签: indexing lucene.net

我创建了一个索引,用于索引网站不同部分的事件项。 这些项目在网站上的结构如下:

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

这些路径存储在索引中的字段path中。

在开始页面上,我需要概述来自所有不同部分的事件。 当我在一个部分时,我只需要在该部分下面的事件。

我添加了一个像这样的booleanquery:

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

“path”是通过自定义索引脚本添加的字段;

要检索起始页面的项目,我将使用以下方法搜索索引:

string startPath = "/Start";

这通常会为我提供路径以“/ Start”开头的所有项目

要检索section1的项目,我会使用以下方法搜索我的索引:

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

这通常会给我所有路径以“/ Start / Section1 / Events”

开头的项目

我已经为新闻项目实施了这个解决方案,并且工作正常。对于事件项目,它没有。 当我搜索我的索引时,它不返回任何命中。问题是最后三个文件夹名称是数字。 当我将文件夹(f.e.2011,12,25)重命名为文本(二千,十二,二十五)时,它会返回命中。

如何让我的索引返回结果,保持文件夹名称为数字?

1 个答案:

答案 0 :(得分:0)

使用CharTokenizer作为您的路径,并IsTokenChar(char c)/返回false。

这样您就可以确定路径的每个部分都是个人Token