我正在尝试在Apache Solr中创建新的自定义查询解析器。对于用户查询中的每个单词,我想在文本文件中添加1到n个不同的单词。但是问题是我不知道如何从查询中获取单个单词?
一个尝试使用分析器的人,但我得到了与其字段相关的单词。
这是我到目前为止编写的代码:
public class CustomQueryParser extends QParser
{
private String fieldName;
public CustomQueryParser(String qstr, SolrParams localParams, SolrParams params, SolrQueryRequest req)
{
super(qstr, localParams, params, req);
fieldName = params.get("df");
}
@Override
public Query parse() throws SyntaxError
{
Analyzer analyzer = req.getSchema().getQueryAnalyzer();
try (TokenStream ts = analyzer.tokenStream(fieldName, qstr))
{
CharTermAttribute termAttr = ts.getAttribute(CharTermAttribute.class);
ts.reset();
while (ts.incrementToken())
{
termAttr.toString();
}
}
catch (IOException e)
{
e.printStackTrace();
}
BooleanQuery.Builder builder = new BooleanQuery.Builder();
return builder.build();
}
}
感谢帮助。