- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经使用 Hibernate Search 为我的数据库编制了索引。我使用自定义分析器,用于索引和查询。我有一个名为 inchikey 的字段,不应对其进行标记化。示例值是:
当我与 Luke 一起查看我的索引时,我可以确认它们没有按要求进行标记化。
但是,当我尝试使用网络应用程序搜索它们时,找到了一些 inchikeys,而另一些则没有。奇怪的是,对于这些 inchikeys,当我在没有最后一个连字符的情况下进行搜索时,搜索确实有效,如下所示:BBBAWACESCACAP-UHFFFAOYSA N
我没能在未找到的 inchikeys 中找到共同的元素。
知道这里发生了什么吗?
我使用 MultiFieldQueryParser 来搜索数据库中的不同字段:
String[] searchfields = Compound.getSearchfields();
MultiFieldQueryParser parser = new MultiFieldQueryParser(Version.LUCENE_29, Compound.getSearchfields(), new ChemicalNameAnalyzer());
//Disable the following if search performance is too slow
parser.setAllowLeadingWildcard(true);
FullTextQuery fullTextQuery = fullTextSession.createFullTextQuery(parser.parse("searchterms"), Compound.class);
List<Compound> hits = fullTextQuery.list();
有关我们设置的更多详细信息已发布here蒂姆和我。
最佳答案
事实证明输入文件中的最后一个条目没有被正确索引。这些正在被标记化。事实上,它们似乎被索引了两次:一次没有被标记化,一次被标记化。当我搜索时,我找不到未标记的。
我还没有找到原因,但我认为这可能与我们的解析器结束有关,而 Lucene 仍在索引最后的条目,因此 Lucene 恢复到默认分析器 (StandardAnalyzer)。当我找到罪魁祸首时,我会在这里报告。
将@Analyzer(impl = ChemicalNameAnalyzer.class) 添加到字段中可以解决问题,但我想要的是我的原始设置,默认分析器在配置中定义一次,如下所示:
<property name="hibernate.search.analyzer">path.to.ChemicalNameAnalyzer</property>
关于java - 为什么 Lucene 有时不匹配 InChIKeys?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5469964/
我已经使用 Hibernate Search 为我的数据库编制了索引。我使用自定义分析器,用于索引和查询。我有一个名为 inchikey 的字段,不应对其进行标记化。示例值是: BBBAWACESCA
我是一名优秀的程序员,十分优秀!