【问题标题】:Some problems on sphinx for Java API关于 Java API 的 sphinx 的一些问题
【发布时间】:2013-11-04 05:34:24
【问题描述】:

我是sphinx 的新手,遇到了一些问题:

$1 在csft.conf中的searchd类中设置max_matches = 200后,我调用了

org.sphx.api.test.main(new String[]{"-h", "127.0.0.1","-i", "magnet","-p", "9312", "-l", "100", "keyword"});

在java main 方法中。返回的错误是

错误:搜索错误:per-query max_matches=1000 out of bounds (per-server max_matches=200)

如您所见,我添加了参数:-l = 100,我还应该设置什么来防止在 Java 中出现此错误?

$2 我想使用sortMode = SphinxClient.SPH_SORT_TIME_SEGMENTS 让搜索结果按时间倒数排序。我的属性在csft.conf中是这样写的:

sql_attr_timestamp=UNIX_TIMESTAMP(upload_time) as dt

谁能告诉我如何在 Java 代码中设置属性?我试过在java中设置sortClauseString,但是总是说属性XXX没有找到

$3我想知道 Java 中的 SphinxClient 是否是线程安全的,因为我不喜欢每次有人查询时都创建一个 SphinxClient 实例。

提前致谢!

【问题讨论】:

    标签: java sphinx


    【解决方案1】:
    1. 如果您使用的类是https://code.google.com/p/sphinxtools/source/browse/trunk/src/org/sphx/test/test.java?r=2 那么该函数甚至从不检查'argv'。它对所有变量进行硬编码。没有任何东西作为第三个参数传递给 setLimits
    2. sql_attr_timestamp 只接受一个列名,没有函数或任何东西。函数调用必须在主 sql_query
    3. 我的 java 生锈了,但不得不说不。它将各种状态存储在私有变量中。同时使用客户端的多个线程将破坏它们。

    【讨论】:

    • 感谢您的回答!我找到了setLimits方法。
    猜你喜欢
    • 2012-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-18
    • 1970-01-01
    • 1970-01-01
    • 2016-12-06
    • 1970-01-01
    相关资源
    最近更新 更多