【发布时间】:2015-07-03 09:46:13
【问题描述】:
我已经使用 Lucene 的关键字分析器在 OrientDB 上索引了一个属性:
CREATE INDEX Snippet.ssdeep ON Snippet (ssdeep) FULLTEXT ENGINE LUCENE METADATA {"analyzer":"org.apache.lucene.analysis.core.KeywordAnalyzer"}
该文件包含我为测试编制索引的 simhashes。
现在,当我使用 Lucene 进行搜索时,我会得到准确查询的响应,但不会得到模糊查询的响应(尽管正确转义了查询文本)。
例如,给定一个值为“192:d4e1GDZYDUZrw9AfCB+A66ancCZmx9n2P:2e1GW18A66ac/YP”的字段,以下查询会产生一条记录:
SELECT FROM Snippet WHERE ssdeep LUCENE "192\\:d4e1GDZYDUZrw9AfCB\\+A66ancCZmx9n2P\\:2e1GW18A66ac\\/YP"
虽然此查询不产生任何记录:
SELECT FROM Snippet WHERE ssdeep LUCENE "192\\:d4e1GDZYDUZrw9AfCB\\+A66ancCZmx9n2P\\:2e1GW18A66ac\\/YP~0.9"
我想知道是什么阻止了 Lucene 找到近似结果?更具体地说,是 Lucene(或 KeywordAnalyzer)不适合模糊搜索此类字符串,还是原因是 Lucene 和 OrientDB 之间的接口?
即我在同一个数据库上有其他全文 Lucene 索引,但所有这些字段都包含普通文本,并使用简单或标准分析器进行分析。这是我真正需要全文索引的唯一字段,但它无法正常工作。
【问题讨论】:
标签: indexing lucene orientdb fuzzy-search