Java 用空格分割Lucene QueryString的最有效方法
按空格分割搜索查询时,例如搜索名称时,术语“John Doe”将匹配结果“John”、“Doe”或“John Doe”,而不是仅搜索整个查询。我现在就是这样做的:Java 用空格分割Lucene QueryString的最有效方法,java,lucene,Java,Lucene,按空格分割搜索查询时,例如搜索名称时,术语“John Doe”将匹配结果“John”、“Doe”或“John Doe”,而不是仅搜索整个查询。我现在就是这样做的: BooleanQuery booleanQuery = new BooleanQuery(); String[] terms = queryString.split(" "); for(String term : terms) { booleanQuery.add(new FuzzyQuery(new Term("firstN
BooleanQuery booleanQuery = new BooleanQuery();
String[] terms = queryString.split(" ");
for(String term : terms) {
booleanQuery.add(new FuzzyQuery(new Term("firstName", term)), BooleanClause.Occur.SHOULD);
booleanQuery.add(new FuzzyQuery(new Term("lastName", term)), BooleanClause.Occur.SHOULD);
}
对我来说,这种方法有点混乱。有更好的方法吗?如果您没有使用普通的分析器,那么查询解析器是错误的 根据您正在尝试的操作,您可能应该使用分析器拆分查询字符串。这不是强制性的,但如果您不这样做(例如,您可以分割空白,然后独立分析每个单词),则需要解决一些(非平凡的)问题:
- 当对一个单词的分析产生几个术语(可能与复合名称一起出现)时,该怎么办
- 当单词是停止词(不产生任何标记)时该怎么办