我想匹配字段开头附近的前缀。我有这个,但它不匹配的前缀;如果搜索项与它匹配,则它仅与整个词匹配。似乎没有办法将SpanTermQuery和PrefixQuery结合起来。
var nameTerm = new Term("name", searchTerm);
var prefixName = new PrefixQuery(nameTerm);
var prefixAtStart = new BooleanQuery
{
{ prefixName, Occur.MUST },
{ new SpanFirstQuery(new SpanTermQuery(nameTerm), 0), Occur.MUST }
};
例如:
- 检索词:
"Comp"
- 要查找:
"Computer science class"
和"Comp Sci"
- 唯一发现:
"Comp Sci"
- 不想找到:
"Apple's latest computer"
RegexpQuery可以理解位置吗?
2条答案
按热度按时间f2uvfpb91#
当你只想匹配前缀时,你可以通过为你的字段设置下面的字段类型来完成。
那么在这种情况下,查询将是:
现在你有一个第二个你需要NGramFilter,所以你可以使用下面的字段类型为您的字段。
kcrjzv8t2#
翻译Abhijit的回应,这里是Lucene.Net设置EdgeNGramFilter的方法: