gpt4 book ai didi

Java Lucene : Search for terms that include non-alphanumeric characters

转载 作者:行者123 更新时间:2023-12-01 15:50:43 25 4
gpt4 key购买 nike

我需要能够使用 termDocs 和 Term 返回结果。当我使用标准分析器时,我不会返回任何结果,关于其他分析器的任何想法都可以执行与标准分析器相同的所有操作,并使用诸如(示例术语-#define)之类的术语返回结果:

      analyser = new StandardAnalyser(Version.LUCENE_30);
reader = IndexReader.open(FSDirectory.open(IndexDir), true);
TermDocs td = reader.termDocs();
QueryParser parserContents = new QueryParser(Version.LUCENE_30,field,analyser);
query = parserContents.parse(searchTerm);
docs = search.search(query, 100000);
ScoreDoc[] documents = docs.scoreDocs;
for(ScoreDoc match : documents)
{
td.seek(new Term(field,w));
td.skipTo(match.doc);
hits = td.freq();
}

但是,当我尝试使用 queryparser 而不是 termdocs 时,我确实得到了结果。在上述上下文中,对于 #define(特殊字符 #)等术语,命中率始终为零。

最佳答案

StandardAnalyzer 对标记进行了大量预处理(它使用停止列表,删除非字母字符、小写字母等),因此可能会解释您的意思在您的搜索结果中看到。尝试使用 SimpleAnalyzer 甚至 WhitespaceAnalyzer 分析相同的字段,看看会得到什么。这可能会给您足够的结果经验,以了解这些分析器之一是否足够,或者如何构建您自己的分析器来指定您所需的确切标记化操作。您可能还想添加多个具有相同值且由不同分析器处理的字段。这样,例如,您可以搜索词干文本和未词干文本、删除或未删除停用词的文本、包含或不包含特殊字符的文本等。

关于Java Lucene : Search for terms that include non-alphanumeric characters,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6110826/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com