当前位置 : 主页 > 网络推广 > seo >

全文搜索 – 无法在lucene索引中搜索所有生成的术语

来源:互联网 收集:自由互联 发布时间:2021-06-16
我正在使用自定义分析器索引和搜索代码.给定文本“将wi-fi工作”,生成以下标记(‘将’作为停止词,被消除). wi-fi {position:2 start:5 end:10}wifi {position:2 start:5 end:10}wi {position:2 start:5 end:7}fi
我正在使用自定义分析器索引和搜索代码.给定文本“将wi-fi工作”,生成以下标记(‘将’作为停止词,被消除).

wi-fi {position:2 start:5 end:10}
wifi {position:2 start:5 end:10}
wi {position:2 start:5 end:7}
fi {position:2 start:8 end:10}
work {position:3 start:11 end:15}

当我搜索wi-fi术语时,我会得到搜索结果.但是,当我为wifi发出任何查询(短语/非短语)时,wi,fi我没有得到任何结果.生成的令牌有什么问题吗?

解析的搜索查询:

对于Wi-Fi(工作正常)

Lucene's: +matchAllDocs:true +(alltext:wi-fi alltext:wifi alltext:wi alltext:fi)

对于wifi(没有返回结果)

Lucene's: +matchAllDocs:true +alltext:wifi

对于“将wi-fi工作”(工作正常)

Lucene's: +matchAllDocs:true +alltext:"(wi-fi wifi wi fi) work"

对于“将wifi工作”(没有返回结果)

Lucene's: +matchAllDocs:true +alltext:"? wifi work"

UPDATE

发现问题:

public boolean incrementToken() throws IOException
{
    /*
     * first return all tokens in the list
     */
    if (tokens.size() > 0)
    {
        Token top = tokens.removeFirst();
        restoreState(current);
        **termAtt.setEmpty().append(new String(top.buffer(), 0, top.length()));**
        offsetAtt.setOffset(top.startOffset(), top.endOffset());
        posIncrAtt.setPositionIncrement(0);
        return true;
    }

    /*
     * if there are no more incoming tokens return false
     */
    if (!input.incrementToken())
        return false;

    Token wrapper = new Token();
    wrapper.copyBuffer(termAtt.buffer(), 0, termAtt.length());
    wrapper.setStartOffset(offsetAtt.startOffset());
    wrapper.setEndOffset(offsetAtt.endOffset());
    wrapper.setPositionIncrement(posIncrAtt.getPositionIncrement());

    normalizeHyphens(wrapper);
    current = captureState();
    return true;
}

我在上面用粗线表示

termAtt.setEmpty().append(new String(top.buffer()));

当我搜索wi时,我没有得到任何结果,但是wi *用于给出结果.看起来这个top.buffer()包含一些额外的垃圾,这导致了奇怪的行为.

浪费了一天这个:(

只是在不知道你的分析器或解析器的情况下猜测.

>确保在搜索中使用的单词wi,fi不是停用词的一部分.可能停止列表文件是您检查的位置>分面搜索/加权搜索.确保你没有搞砸这些.>解析/分析后,请确保获得要搜索的标记化术语.>确保将您的条款推送到索引中.

网友评论