Sphinx-将OR运算符与字段开始/结束修饰符结合在一起

时间:2018-10-01 09:40:05

标签: php full-text-search sphinx

此表达式写正确吗?因为我没有收到所有预期的结果:

<?xml version="1.0" encoding="UTF-8"?><process version="9.0.002">
  <context>
    <input/>
    <output/>
    <macros/>
  </context>
  <operator activated="true" class="process" compatibility="6.0.002" expanded="true" name="Process" origin="GENERATED_TUTORIAL">
    <process expanded="true">
      <operator activated="true" class="retrieve" compatibility="9.0.002" expanded="true" height="68" name="Iris" origin="GENERATED_TUTORIAL" width="90" x="45" y="120">
        <parameter key="repository_entry" value="//Samples/data/Iris"/>
      </operator>
      <operator activated="true" class="discretize_by_frequency" compatibility="7.1.001" expanded="true" height="103" name="Discretize by Frequency" origin="GENERATED_TUTORIAL" width="90" x="179" y="120">
        <parameter key="number_of_bins" value="5"/>
        <parameter key="range_name_type" value="short"/>
      </operator>
      <operator activated="true" class="nominal_to_binominal" compatibility="7.1.001" expanded="true" height="103" name="Nominal to Binominal" origin="GENERATED_TUTORIAL" width="90" x="313" y="120">
        <parameter key="transform_binominal" value="true"/>
        <parameter key="use_underscore_in_name" value="true"/>
      </operator>
      <operator activated="true" class="concurrency:fp_growth" compatibility="9.0.002" expanded="true" height="82" name="FPGrowth" origin="GENERATED_TUTORIAL" width="90" x="447" y="120">
        <parameter key="min_support" value="0.1"/>
        <parameter key="find_min_number_of_itemsets" value="false"/>
        <parameter key="min_number_of_itemsets" value="1"/>
        <enumeration key="must_contain_list"/>
      </operator>
      <operator activated="true" class="create_association_rules" compatibility="9.0.002" expanded="true" height="82" name="Create Association Rules" origin="GENERATED_TUTORIAL" width="90" x="581" y="120"/>
      <operator activated="true" class="converters:rules_2_example_set" compatibility="0.4.000" expanded="true" height="82" name="Association Rules to ExampleSet" width="90" x="782" y="136"/>
      <connect from_op="Iris" from_port="output" to_op="Discretize by Frequency" to_port="example set input"/>
      <connect from_op="Discretize by Frequency" from_port="example set output" to_op="Nominal to Binominal" to_port="example set input"/>
      <connect from_op="Nominal to Binominal" from_port="example set output" to_op="FPGrowth" to_port="example set"/>
      <connect from_op="FPGrowth" from_port="frequent sets" to_op="Create Association Rules" to_port="item sets"/>
      <connect from_op="Create Association Rules" from_port="rules" to_op="Association Rules to ExampleSet" to_port="rules input"/>
      <connect from_op="Association Rules to ExampleSet" from_port="example set" to_port="result 1"/>
      <portSpacing port="source_input 1" spacing="0"/>
      <portSpacing port="sink_result 1" spacing="90"/>
      <portSpacing port="sink_result 2" spacing="18"/>
    </process>
  </operator>
</process>

我应该让所有用户的国籍代码等于“ MD”或“ GB”或“ IT”

应该类似于mysql中的此查询:

(@nationality_code ("^MD$" | "^GB$" | "^IT$"))

更新 如果仅搜索MD和GB,则会收到正确的结果:

我执行的查询是这样:

SELECT * FROM users WHERE nationality_code IN ('MD', 'GB', 'IT')

enter image description here

但是,如果我还添加“ ^ IT $”,就不会再有“ MD”国籍的用户了。

enter image description here

如果删除开始/结束修饰符,则会收到预期的结果,为什么会出现这种情况?

更新 因此,这里是我的索引转储和sphinx.conf文件:sphinx-dump

2 个答案:

答案 0 :(得分:1)

是的。这个表达是正确的。对我来说很好:

List

确保索引中确实只有MD / GB / IT,之前/之后没有任何内容,并且没有min_word_len <2。

答案 1 :(得分:0)

There's a problem with Sphinx 3.0.3 ver, because with Sphinx 2.2.11 it works