我创建了一个索引,用于索引网站不同部分的事件项。 这些项目在网站上的结构如下:
/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)重命名为文本(二千,十二,二十五)时,它会返回命中。
如何让我的索引返回结果,保持文件夹名称为数字?
答案 0 :(得分:0)
使用CharTokenizer
作为您的路径,并IsTokenChar(char c)
为/
返回false。
这样您就可以确定路径的每个部分都是个人Token
。