我是 sphinx 的新手,我遇到了一些问题:
$1 在 csft.conf 中的 searchd 类中设置 max_matches = 200
后,我调用了
org.sphx.api.test.main(new String[]{"-h", "127.0.0.1","-i", "磁铁","-p", "9312", “-l”、“100”、“关键字”});
在java main方法中。返回的错误是
错误:searchd 错误:每个查询 max_matches=1000 超出范围(每个服务器 max_matches=200)
如您所见,我添加了参数:-l = 100
,我还应该设置什么来防止 Java 中出现此错误?
$2 我想使用 sortMode = SphinxClient.SPH_SORT_TIME_SEGMENTS
让搜索结果按时间降序排序。我的属性在csft.conf中是这样写的:
sql_attr_timestamp=UNIX_TIMESTAMP(upload_time
) 作为 dt
谁能告诉我如何在 Java 代码中设置该属性?我尝试在java中设置sortClause
字符串,但它总是说尚未找到属性XXX。
$3 我想知道 Java 中的 SphinxClient
是否是线程安全的,因为我不喜欢每次有人执行查询时都创建一个 SphinxClient 实例。
提前致谢!
最佳答案
- 如果您使用的类是 https://code.google.com/p/sphinxtools/source/browse/trunk/src/org/sphx/test/test.java?r=2 那么该函数甚至不会检查“argv”。它对所有变量进行硬编码。没有任何内容作为第三个参数传递给 setLimits
sql_attr_timestamp
仅接受列名,不接受函数或任何内容。函数调用必须位于主sql_query
中
- 我的java很生疏,但不得不说不。它将所有类型的状态存储在私有(private)变量中。多个线程同时使用客户端将会破坏它们。
关于java - sphinx for Java API的一些问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19762187/