在 Solr 和 DB 之间切换以执行查询 alfresco cmis
Switch between Solr and DB for Query Execution alfresco cmis
使用 Alfresco Community - 5.0.0 版本。
在 alfresco-global.properties 文件中尝试了以下属性:
queryConsistency=EVENTUAL 然后所有查询都将转到 Solr。
queryConsistency=TRANSACTIONAL 然后所有查询都将转到数据库。
并且默认模式首先执行来自数据库的所有查询,然后在来自数据库的失败的情况下执行Solr。
Q1:有什么模式可以先查询Solr,如果Solr没有结果再查询数据库?
Q2:我们可以从 JAVA 端执行一些来自 Solr 的查询和一些来自 DB 的查询吗?
Alfresco 称之为 Transactional Metadata Query,当 Solr returns 没有结果时,查询可以回退到数据库。
可以找到有关配置此行为的详细信息 here,但基本上 queryConsistency
应该设置为 TRANSACTIONAL_IF_POSSIBLE.
请务必注意,尤其是当您将 Lucene 查询转换为 CMIS 时,某些查询参数(例如 +PATH:
)和通配符(例如 @docs:pageId:homepage
)需要 Solr 才能运行,并且在 Solr 失败的情况下不能直接引用数据库。您可以在管理工具/节点浏览器下的 Alfresco 中测试给定参数是否需要 Solr。 运行 您的查询选择了不同的类型; type: solr-fts-alfresco
仅限 Solr; type: db-afts
首先查询 Solr,如果 Solr returns 什么都没有,则回退到数据库。
为了回答你的第二个问题,上面的第二个 link 提到:
The solr.query.cmis.queryConsistency
and solr.query.fts.queryConsistency
properties can also be set per query on the SearchParameters and QueryOptions objects.
所以看起来你可以在你的 Java 代码中完成你想要的,但我自己还没有尝试过。我发现最可取的是,作为一般规则,首先使用 Solr 以获得性能提升,然后仅在必要时回退到数据库。我想不出在您的业务逻辑中嵌入数据源选择的好案例。
使用 Alfresco Community - 5.0.0 版本。
在 alfresco-global.properties 文件中尝试了以下属性:
queryConsistency=EVENTUAL 然后所有查询都将转到 Solr。 queryConsistency=TRANSACTIONAL 然后所有查询都将转到数据库。 并且默认模式首先执行来自数据库的所有查询,然后在来自数据库的失败的情况下执行Solr。
Q1:有什么模式可以先查询Solr,如果Solr没有结果再查询数据库?
Q2:我们可以从 JAVA 端执行一些来自 Solr 的查询和一些来自 DB 的查询吗?
Alfresco 称之为 Transactional Metadata Query,当 Solr returns 没有结果时,查询可以回退到数据库。
可以找到有关配置此行为的详细信息 here,但基本上 queryConsistency
应该设置为 TRANSACTIONAL_IF_POSSIBLE.
请务必注意,尤其是当您将 Lucene 查询转换为 CMIS 时,某些查询参数(例如 +PATH:
)和通配符(例如 @docs:pageId:homepage
)需要 Solr 才能运行,并且在 Solr 失败的情况下不能直接引用数据库。您可以在管理工具/节点浏览器下的 Alfresco 中测试给定参数是否需要 Solr。 运行 您的查询选择了不同的类型; type: solr-fts-alfresco
仅限 Solr; type: db-afts
首先查询 Solr,如果 Solr returns 什么都没有,则回退到数据库。
为了回答你的第二个问题,上面的第二个 link 提到:
The
solr.query.cmis.queryConsistency
andsolr.query.fts.queryConsistency
properties can also be set per query on the SearchParameters and QueryOptions objects.
所以看起来你可以在你的 Java 代码中完成你想要的,但我自己还没有尝试过。我发现最可取的是,作为一般规则,首先使用 Solr 以获得性能提升,然后仅在必要时回退到数据库。我想不出在您的业务逻辑中嵌入数据源选择的好案例。