Ich verwende Sitecore 8.1 Update 1 mit ContentSearch-Funktion. Ich konfiguriere meinen Index wie folgt:Sitecore Content Search (Lucene) - Zwischen <T>() funktioniert nicht
(Ich will Broker/Client Büro von Breite und Länge suchen)
<fieldMap type="Sitecore.ContentSearch.FieldMap, Sitecore.ContentSearch">
<fieldNames hint="raw:AddFieldByFieldName">
<field fieldName="latitude" storageType="NO" indexType="UNTOKENIZED" vectorType="NO" boost="1f" type="System.Decimal" settingType="Sitecore.ContentSearch.LuceneProvider.LuceneSearchFieldConfiguration, Sitecore.ContentSearch.LuceneProvider">
</field>
<field fieldName="longitude" storageType="NO" indexType="UNTOKENIZED" vectorType="NO" boost="1f" type="System.Decimal" settingType="Sitecore.ContentSearch.LuceneProvider.LuceneSearchFieldConfiguration, Sitecore.ContentSearch.LuceneProvider">
</field>
2)
1) in index.config Ok jetzt verwenden Luke.net Werkzeug seinen Wert
3) meine SearchResultItem Klasse zu überprüfen:
[IndexField("latitude")]
public decimal Latitude { get; set; }
[IndexField("longitude")]
public decimal Longitude { get; set; }
4) bei meiner Service-Klasse möchte ich versuchen, zwischen Methode, Breite/Länge in Reichweite zu suchen, aber es funktioniert nicht. Ich versuche gleich (==) Methode und es funktioniert. Ich denke, mein Index ist in Ordnung, aber vielleicht stimmt etwas nicht mit meiner Suchsyntax. Kannst du bitte helfen?
//TODO: Testing -----------------
var query = searchContext.GetQueryable<BrokerSearchIndexItem>();
// IF i use this line (BETWEEN) --> NOT work ??
query = query.Where(item => (item.Latitude.Between(-34, -33, Inclusion.Both)
&& item.Longitude.Between(149, 151, Inclusion.Both)));
// If I use this line (EQUAL) --> work !
//query = query.Where(item => item.Latitude == -33.737643m && item.Longitude == 150.856664m);
var searchResult = query.GetResults();
5) Ich lese schon dieses Tutorial (link) und meine Suchprotokoll als auch, so scheint es zwischen Methode geben Sie mir Recht log, aber nicht sicher, warum ich nichts
9636 21:10:03 INFO ExecuteQueryAgainstLucene (steadfast_broker_location): +latitude:[-34 TO -33] +longitude:[149 TO 151] - Filter :
9636 21:10:03 INFO ExecuteQueryAgainstLucene (steadfast_broker_location): +latitude:[-34 TO -33] +longitude:[149 TO 151] - Filter :
9636 21:10:03 INFO ExecuteQueryAgainstLucene (steadfast_broker_location): +latitude:[-34 TO -33] +longitude:[149 TO 151] - Filter :
Nicht sicher, aber versuchen Sie '-34.000000m' anstatt nur '-34'. Oder als Workaround sollte dies helfen: query = query.Where (item => (item.Latitude> -34.000000m && item.Latitude <-33.000000m) && (item.Longitude> 149.000000m && item.Longitude <151.000000m)) –