我正在处理一个接受不同语言用户输入的应用程序(目前修复了3种语言).要求是用户可以输入文本,而不必费心通过UI中提供的复选框选择语言.
是否有现有的Java库来检测文本的语言?
我想要这样的东西:
text = "To be or not to be thats the question."
// returns ISO 639 Alpha-2 code
language = detect(text);
print(language);
Run Code Online (Sandbox Code Playgroud)
结果:
EN
Run Code Online (Sandbox Code Playgroud)
我不想知道如何自己创建一个语言检测器(我已经看到很多博客试图这样做).该库应提供简单的APi,并且完全脱机工作.开源或商业封闭并不重要.
我也在SO上发现了这个问题(还有一些):
我喜欢以有效的方式用相应的替换字符替换字符串的某组字符.
例如:
String sourceCharacters = "š???Š???žŽ";
String targetCharacters = "sdccSDCCzZ";
String result = replaceChars("Gra?iš?e", sourceCharacters , targetCharacters );
Assert.equals(result,"Gracisce") == true;
Run Code Online (Sandbox Code Playgroud)
有没有比使用replaceAllString类的方法更有效的方法?
我的第一个想法是:
final String s = "Gra?iš?e";
String sourceCharacters = "š???Š???žŽ";
String targetCharacters = "sdccSDCCzZ";
// preparation
final char[] sourceString = s.toCharArray();
final char result[] = new char[sourceString.length];
final char[] targetCharactersArray = targetCharacters.toCharArray();
// main work
for(int i=0,l=sourceString.length;i<l;++i)
{
final int pos = sourceCharacters.indexOf(sourceString[i]);
result[i] = pos!=-1 ? targetCharactersArray[pos] : sourceString[i];
}
// result
String resultString = …Run Code Online (Sandbox Code Playgroud) 我遇到了一个hibernate错误,或者我有一个错误,我没有看到:
select enty.number from EntityAliasName enty
where enty.myId in
(
select cons.myId from Consens cons where cons.number in
(
select ord.number from Orders ord where ord.customer = :customer
and ord.creationDate <
(
select max(ord.creationDate) from Orders ord where ord.customer = :customer
)
)
)
Run Code Online (Sandbox Code Playgroud)
我得到的是以下内容:
org.hibernate.util.StringHelper.root(StringHelper.java:257)
Caused by: java.lang.NullPointerException
at org.hibernate.util.StringHelper.root(StringHelper.java:257)
at org.hibernate.persister.entity.AbstractEntityPersister.getSubclassPropertyTableNumber(AbstractEntityPersister.java:1391)
at org.hibernate.persister.entity.BasicEntityPropertyMapping.toColumns(BasicEntityPropertyMapping.java:54)
at org.hibernate.persister.entity.AbstractEntityPersister.toColumns(AbstractEntityPersister.java:1367)
at org.hibernate.hql.ast.tree.FromElement.getIdentityColumn(FromElement.java:320)
at org.hibernate.hql.ast.tree.IdentNode.resolveAsAlias(IdentNode.java:154)
at org.hibernate.hql.ast.tree.IdentNode.resolve(IdentNode.java:100)
at org.hibernate.hql.ast.tree.FromReferenceNode.resolve(FromReferenceNode.java:117)
at org.hibernate.hql.ast.tree.FromReferenceNode.resolve(FromReferenceNode.java:113)
at org.hibernate.hql.ast.HqlSqlWalker.resolve(HqlSqlWalker.java:854)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.propertyRef(HqlSqlBaseWalker.java:1172)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.propertyRefLhs(HqlSqlBaseWalker.java:5167)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.propertyRef(HqlSqlBaseWalker.java:1133)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectExpr(HqlSqlBaseWalker.java:1993)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectExprList(HqlSqlBaseWalker.java:1932)
at …Run Code Online (Sandbox Code Playgroud) 我有一个带有以下文件的Lucene-Index:
doc1 := { caldari, jita, shield, planet }
doc2 := { gallente, dodixie, armor, planet }
doc3 := { amarr, laser, armor, planet }
doc4 := { minmatar, rens, space }
doc5 := { jove, space, secret, planet }
Run Code Online (Sandbox Code Playgroud)
所以这5个文件使用了14个不同的术语:
[ caldari, jita, shield, planet, gallente, dodixie, armor, amarr, laser, minmatar, rens, jove, space, secret ]
Run Code Online (Sandbox Code Playgroud)
每个学期的频率:
[ 1, 1, 1, 4, 1, 1, 2, 1, 1, 1, 1, 1, 2, 1 ]
Run Code Online (Sandbox Code Playgroud)
方便阅读:
[ caldari:1, jita:1, shield:1, planet:4, …Run Code Online (Sandbox Code Playgroud) 我有一张这样的桌子:
id | name | score
Run Code Online (Sandbox Code Playgroud)
使用Hibernate通过XML映射到POJO.分数列我只需要oder byHQL中的in 子句.score列的值由算法计算,并通过SQL批处理(JDBC)每24小时更新一次.所以我不想用我在运行时不需要的属性来污染我的POJO.
对于可能不是问题的单个列,但我有几个不同的分数列.有没有办法只为HQL使用映射属性?
例如这样:
<property name="score" type="double" ignore="true"/>
Run Code Online (Sandbox Code Playgroud)
所以我仍然可以这样做:
from Pojo p order by p.score
Run Code Online (Sandbox Code Playgroud)
但我的POJO实现可能如下所示:
public class Pojo
{
private long id;
private String name;
// ...
}
Run Code Online (Sandbox Code Playgroud)
没有为score实现添加提供或属性的Setter .
使用最新的Hibernate版本的Java.
更新:
在完美的世界中,它可以这样做(感谢Pascal Thivent):
<property name="score" access="noop" insert="false" update="false"/>
Run Code Online (Sandbox Code Playgroud)
我正在寻找一个描述如何实现一个工作框架破坏者的指南,该框架也可以处理在浏览器中没有激活JS的人.
我读了这个非常好的问题,但我对"不要自己动手"或"也许试试......"这样的建议完全不感兴趣.我想看一篇论文,一步一步指导解释每一个"为什么"(没有可能和没有猜测).学术论文首选.
任何人都可以发布链接到这样做的事实上的圣杯纸吗?
谢谢,