【问题标题】:How to search Japanese word using Apache Lucenes Indexer search?如何使用 Apache Lucenes Indexer 搜索来搜索日语单词?
【发布时间】:2018-06-20 06:05:03
【问题描述】:

我正在使用 Apache lucene 的索引器搜索并搜索我正在使用 MultiFieldQueryParser 类的单词。它适用于英文单词,但是当我搜索日文单词时,该单词的计数为零。

例如

MultiFieldQueryParser mqp = new MultiFieldQueryParser(new String[]{"firstName"}, new StandardAnalyzer());
mqp.setAllowLeadingWildcard(true);
Query q =mqp.parse("*abc*");
TopDocs hits = searcher.search(q, 10);
 return hits;  

abov 代码为英文单词返回超过零计数,

但是当我搜索日语单词时,它的计数为零。

例如

MultiFieldQueryParser mqp = new MultiFieldQueryParser(new String[]   {"firstName"}, new StandardAnalyzer());
mqp.setAllowLeadingWildcard(true);
Query q =mqp.parse("*あんくr*");
TopDocs hits = searcher.search(q, 10);
 return hits;  

【问题讨论】:

  • 您好,您必须使用日语分析仪。
  • 你能详细解释一下吗?请..
  • @GweltazNiquel 如何使用日语分析仪
  • 你使用什么版本的Lucene?我可以根据你的版本来回答。否则:您必须将 org.apache.lucene.analysis.ja 包中的“new JapaneseAnalyzer”替换为“new StandardAnalyzer”
  • @GweltazNiquel lucene 4.10.3

标签: apache search lucene


【解决方案1】:

您只需要在 org.apache.lucene.analysis.cjk 中使用相应的分析器(中文、日文和韩文都一样):

MultiFieldQueryParser mqp = new MultiFieldQueryParser(new String[]   {"firstName"}, new CJKAnalyzer());
mqp.setAllowLeadingWildcard(true);
Query q =mqp.parse("*あんくr*");
TopDocs hits = searcher.search(q, 10);
 return hits;  

https://lucene.apache.org/core/4_10_3/analyzers-common/index.html

【讨论】:

  • 我使用了 CJKAnalyzer 和 JapaneseAnalyzer 但在这两种情况下它的结果都是零
  • 您应该使用 CJKAnalyzer。 JapaneseAnalyzer 是一种形态分析仪。您的日志中没有任何内容?
  • 您的索引文件中有一些内容吗?您可以使用 Luke 来查看它的内容(使用适合您的 Lucene 版本的 Luke 版本):getopt.org/luke
  • 如果我们使用 StandardAnalyzer() 那么它工作正常,但它不是按单词搜索,而是按字符搜索。例如如果我们搜索“abc”,那么它应该返回包含单词“abc”的值,但其给出的结果包含字符“a”、“b”、“c”。
  • 这是一个你需要实现的IndexSearcher。那么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多