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テーブルに次のようなレコードがあります
ProductId | ProductName
239289231 | Windows 7
セットアップとインデックス作成(を使用localhost:8089/sorl/dataimport?command=full-import
)が成功したとすると、このクエリを実行しても結果が得られないのはなぜですか。
シナリオ1:localhost:8089/solr/select?q=combined:239289233
それでも、以下のクエリは私に結果を与えます(1つはkeyidフィールドから検索し、もう1つは結合されたフィールドから検索します):
シナリオ2:localhost:8089/solr/select?q=combined:Windows
シナリオ3:localhost:8089/solr/select?q=keyid:239289233
ここで使用しているTokenizerFactoryまたはFilterFactoryに問題がありますか?ProductId
Solrは、キャストして連結した後、文字列として扱うべきではありませんVARCHAR
。したがって、Solrを現在のように呼び出すことができScenario 1
ますか?