我正在使用 solr 实现全文搜索,如果有人能为我提供一些帮助解决我面临的一些问题,我将不胜感激。
我的 schema.xml 如下所示:
<?xml version="1.0" encoding="UTF-8" ?>
<schema name="products" version="1.2">
<types>
<fieldType name="long" class="solr.TrieLongField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
<fieldType name="concatenated" class="solr.TextField" positionIncrementGap="100" >
<analyzer>
<tokenizer class="solr.LowerCaseTokenizerFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="15" side="front"/>
<filter class="solr.WordDelimiterFilterFactory"
splitOnCaseChange="0"
splitOnNumerics="1"
catenateWords="1"
catenateNumbers="1"
catenateAll="1"
preserveOriginal="1"
/>
</analyzer>
</fieldType>
</types>
<fields>
<field name="keyid" type="long" indexed="true" stored="false" required="true"/>
<field name="combined" type="concatenated" indexed="true" stored="false"/>
</fields>
<uniqueKey>keyid</uniqueKey>
<defaultSearchField>combined</defaultSearchField>
<copyField source="keyid" dest="keyid"/>
<solrQueryParser defaultOperator="OR"/>
</schema>
我的 data-config.xml 文件如下所示:
<dataConfig>
<document name="products">
<entity name="product" query="SELECT ProductId AS keyid, CONVERT(VARCHAR(18), ProductId) + ' ' + ProductName AS combined FROM Products"
<field column="keyid" name="keyid"/>
<field column="combined" name="combined"/>
</entity>
</document>
</dataConfig>
我的 Products 表中有如下记录
产品 ID|产品名称
239289231|Windows 7
假设设置和索引成功(使用localhost:8089/sorl/dataimport?command=full-import
),为什么我在运行此查询时不会得到结果:
场景一:localhost:8089/solr/select?q=combined:239289233
然而,下面的查询确实给了我结果(一个从keyid字段搜索,另一个从组合字段搜索):
场景二:localhost:8089/solr/select?q=combined:Windows
场景 3:localhost:8089/solr/select?q=keyid:239289233
问题是这里使用的 TokenizerFactory 或 FilterFactory 吗?Solr 不应该ProductId
在将其转换为并连接之后将其视为字符串VARCHAR
- 因此可以按照我正在做的方式调用它Scenario 1
吗?